A full-stack mechanic shop management application for scheduling appointments and customer management.
- ASP.NET Core 9.0 Web API
- Entity Framework Core with SQLite
- Swagger/OpenAPI for API documentation
- React 18 with TypeScript
- Vite for build tooling
CalebsShop/
├── MechanicShopAPI/ # ASP.NET Core Web API backend
│ ├── Controllers/ # API controllers
│ ├── Models/ # Domain models
│ ├── Data/ # Database context
│ └── Migrations/ # EF Core migrations
└── frontend/ # React frontend
- Customer Management: Create, view, update, and delete customer records
- Vehicle Tracking: Associate vehicles with customers and track vehicle details
- Appointment Scheduling: Schedule and manage service appointments
- Service Records: Track service history for each vehicle with costs and details
- Personal information (name, email, phone, address)
- Associated vehicles
- Appointment history
- Vehicle details (make, model, year, VIN, license plate)
- Ownership information
- Service history
- Scheduled appointments
- Scheduled date and time
- Service type and description
- Status tracking (Scheduled, InProgress, Completed, Cancelled, NoShow)
- Links to customer and vehicle
- Service details and costs
- Labor and parts breakdown
- Technician information
- Mileage at service
- .NET 9.0 SDK
- Node.js (v18 or higher)
- npm or yarn
-
Navigate to the API directory:
cd ~/Code/CalebsShop/MechanicShopAPI
-
Run the API:
dotnet run
The API will start at:
- HTTPS: https://localhost:7xxx (port shown in console)
- HTTP: http://localhost:5xxx (port shown in console)
- Swagger UI: https://localhost:7xxx/swagger
-
Navigate to the frontend directory:
cd ~/Code/CalebsShop/frontend
-
Start the development server:
npm run dev
The frontend will start at http://localhost:5173
GET /api/customers- Get all customersGET /api/customers/{id}- Get customer by IDPOST /api/customers- Create new customerPUT /api/customers/{id}- Update customerDELETE /api/customers/{id}- Delete customer
GET /api/vehicles- Get all vehiclesGET /api/vehicles/{id}- Get vehicle by IDGET /api/vehicles/customer/{customerId}- Get vehicles by customerPOST /api/vehicles- Create new vehiclePUT /api/vehicles/{id}- Update vehicleDELETE /api/vehicles/{id}- Delete vehicle
GET /api/appointments- Get all appointmentsGET /api/appointments/{id}- Get appointment by IDGET /api/appointments/upcoming- Get upcoming appointmentsGET /api/appointments/customer/{customerId}- Get appointments by customerPOST /api/appointments- Create new appointmentPUT /api/appointments/{id}- Update appointmentPATCH /api/appointments/{id}/status- Update appointment statusDELETE /api/appointments/{id}- Delete appointment
GET /api/servicerecords- Get all service recordsGET /api/servicerecords/{id}- Get service record by IDGET /api/servicerecords/vehicle/{vehicleId}- Get service records by vehiclePOST /api/servicerecords- Create new service recordPUT /api/servicerecords/{id}- Update service recordDELETE /api/servicerecords/{id}- Delete service record
The application uses SQLite for data storage. The database file (mechanicshop.db) is created automatically when you first run the API.
To create a new migration:
dotnet ef migrations add MigrationNameTo update the database:
dotnet ef database update- The API uses Swagger for documentation and testing
- Access Swagger UI at https://localhost:7xxx/swagger when the API is running
- CORS is configured to allow requests from the React frontend
- The frontend is set up with React + TypeScript
- Vite provides fast HMR (Hot Module Replacement) during development
- API calls should be made to http://localhost:5xxx or https://localhost:7xxx
-
Build out the React frontend with components for:
- Customer list and detail views
- Vehicle management
- Appointment calendar/scheduler
- Service record tracking
-
Add authentication and authorization
-
Implement search and filtering capabilities
-
Add reporting and analytics features
-
Deploy to production environment