Technology Stack - Domenicko/medical-booking-system GitHub Wiki
Technology Stack
1. Frontend
React
React will be used to build the frontend of the Medical Booking System.
React allows the application to be divided into reusable components such as:
- Navigation
- Doctor cards
- Doctor profile
- Booking form
- Appointment information
Tailwind CSS
Tailwind CSS will be used for styling and responsive design.
It will be used to create:
- Responsive layouts
- Buttons and forms
- Cards and navigation
- Spacing and typography
- Mobile, tablet and desktop layouts
2. Backend
Node.js
Node.js will be used as the runtime environment for the backend application.
Node.js allows the backend to use the same JavaScript/TypeScript ecosystem as the React frontend.
Express
Express will be used to build the REST API.
It will handle:
- HTTP requests
- API routes
- Authentication middleware
- Request validation
- Communication with the database
JavaScript
JavaScript will be used for the backend to provide static typing and improve code maintainability.
It will be used for:
- API request and response types
- Database models
- Application services
- Authentication-related data
3. Database
PostgreSQL
PostgreSQL will be used as the main database.
A relational database is appropriate for this project because the system contains related entities such as:
- Users
- Doctors
- Specialties
- Appointments
- Available time slots
The relationships between these entities are important for preventing inconsistent appointment data.
4. Authentication
JWT with HttpOnly Cookies
The application will use JWT-based authentication with HttpOnly cookies.
After a successful login, the backend will create an authentication token and store it in an HttpOnly cookie.
Protected API endpoints will verify the token before processing requests that require authentication.
5. API Architecture
The backend will provide a REST API that allows the React frontend to communicate with the server.
The basic architecture will be:
React Frontend → Express REST API → PostgreSQL Database
6. Version Control and Project Management
Git
Git will be used for version control and to track changes made during development.
GitHub
GitHub will be used for:
- Source code hosting
- Version control collaboration
- GitHub Issues
- GitHub Projects
- Project documentation
- GitHub Wiki
7. Selected Technology Stack
The final technology stack for the project is:
- React
- Tailwind CSS
- Node.js
- Express
- JavaScript
- PostgreSQL
- JWT with HttpOnly Cookies
- Git
- GitHub