A full-stack web application that visualizes statistics from job applications.
-
- Country distribution chart
- Status distribution chart
- Progress metrics chart
- Logs table with recent entries
- Date range picker for filtering logs by timestamp
- Trend Analysis
- AI Assistnace that plot charts based on a natural language query
- Node.js
- Express.js
- React
- TypeScript
- Material-UI for components
- Chart.js for data visualization
- Node.js (v14 or higher)
- MongoDB (for MongoDB integration) running on localhost:27017, can be configured on .env file (
MONGODB_URI) - Need to set a valid OPNEAI key under the .env
OPENAI_API_KEY
- Clone the repository
- Make sure mongodb is running on localhost (0.0.0.0) with port 27017!
Assuming all the logs are udner collection - logs (can be configured with env
COLLECTION_NAMEin .env file) - Install backend dependencies:
cd boston-dashboard/backend npm install - Install frontend dependencies:
cd boston-dashboard/frontend npm install
Run both servers with the provided script:
cd boston-dashbaord/
./start-servers.sh (must be in the folder)
This will start:
- Backend server on port 12000 (with sample data)
- Frontend server on port 12001
Access the application at:
- Backend API: http://localhost:12000
- Frontend UI: http://localhost:12001
- docker pull library/mongo
- docker run -p 27017:27017 -t mongo library/mongo
- create a collection named "logs"
- load the boston.ai data to the collection
The application works with logs in the following format:
{
"_id": "68709db2402cf56cd3813d9e",
"country_code": "US",
"currency_code": "USD",
"progress": {
"SWITCH_INDEX": true,
"TOTAL_RECORDS_IN_FEED": 16493,
"TOTAL_JOBS_FAIL_INDEXED": 1521,
"TOTAL_JOBS_IN_FEED": 13705,
"TOTAL_JOBS_SENT_TO_ENRICH": 20,
"TOTAL_JOBS_DONT_HAVE_METADATA": 2540,
"TOTAL_JOBS_DONT_HAVE_METADATA_V2": 2568,
"TOTAL_JOBS_SENT_TO_INDEX": 13686
},
"status": "completed",
"timestamp": "2025-07-11T05:16:20.626Z",
"transactionSourceName": "Deal4",
"noCoordinatesCount": 160,
"recordCount": 11118,
"uniqueRefNumberCount": 9253
}








