SchedulAI is a modern, full-stack event scheduling application built with a React frontend and a Node.js (Express) backend, both written in TypeScript.
The application allows users to create, view, delete, and archive events. A key feature is its AI-like categorization: when a new event is created, the backend automatically assigns it a category ("Work," "Personal," or "Other") by scanning the event's title and notes for predefined keywords.
- Frontend: React, Vite, TypeScript, Tailwind CSS
- Backend: Node.js, Express, TypeScript
- API Client: Axios
- Date Formatting: date-fns
Follow these instructions to set up and run the project on your local machine.
- Node.js (v18 or later recommended)
- npm (or a compatible package manager like yarn or pnpm)
-
Navigate to the server directory:
cd server -
Install dependencies:
npm install
-
Run the development server:
npm run dev
The backend will be running on
http://localhost:5001.
-
Navigate to the client directory from the root:
cd client -
Install dependencies:
npm install
-
Run the development server:
npm run dev
The React application will open in your browser, typically at
http://localhost:5173.
The backend provides the following RESTful API endpoints.
- Endpoint:
GET /events - Description: Retrieves a list of all events, sorted by date and time in ascending order.
- Success Response:
- Code:
200 OK - Content: An array of event objects.
[ { "id": 1, "title": "Project Meeting", "date": "2025-07-22", "time": "10:00", "notes": "Discuss Q3 roadmap.", "category": "Work", "archived": false } ] - Code:
- Endpoint:
POST /events - Description: Creates a new event. The
categoryis automatically determined by the server based on keywords in thetitleandnotes. - Request Body:
{ "title": "Team Lunch", "date": "2025-07-23", "time": "12:30", "notes": "Celebrate project launch." } - Success Response:
- Code:
201 Created - Content: The newly created event object.
- Code:
- Error Response:
- Code:
400 Bad Requestiftitle,date, ortimeare missing.
- Code:
- Endpoint:
PUT /events/:id - Description: Toggles the
archivedstatus of a specific event. - Success Response:
- Code:
200 OK - Content: The updated event object.
- Code:
- Error Response:
- Code:
404 Not Foundif the event with the specifiediddoes not exist.
- Code:
- Endpoint:
DELETE /events/:id - Description: Deletes a specific event from the server.
- Success Response:
- Code:
204 No Content
- Code:
- Error Response:
- Code:
404 Not Foundif the event with the specifiediddoes not exist.
- Code: