Priscripto is an innovative, end-to-end medical appointment and healthcare management platform designed to simplify, streamline, and digitize the entire healthcare experience for patients, doctors, pharmacies, and administrators. In today's fast-paced world, the healthcare sector demands efficient solutions that ensure timely access to doctors, medicines, and healthcare services. Priscripto bridges the gap by offering a unified system that caters to all stakeholders.Built with cutting-edge technologies like React.js, Node.js, Express, MongoDB, and integrated with powerful services such as Google Maps and Stripe payments, Priscripto not only provides a seamless user experience but also ensures security, scalability, and flexibility.
- Doctor Appointment Booking System
- Apollo Pharmacy Integration β Order medicines online.
- Lenskart Collaboration β Book eyeglasses & vision checkups.
- Patient & Doctor Dashboards
- Admin Management Panel
- Health Care Vault - Store & Access Medical Records Securely
- Search Medicine by Name, Category, or Brand
- Real-Time Notifications & Reminders
- E-Prescriptions & Reports Download
- Secure Payment Gateway Integration
- Mobile-Responsive & Clean UI/UX
Crafted with simplicity & usability at the core.
Designed in Figma, ensuring a seamless and intuitive experience across all devices.
- Effortless onboarding & login experience
- Minimal dashboards for quick access to bookings & reports
- Pharmacy & optical integration flow
- Light & dark mode support
- Fully responsive on all devices
π Figma Design File:
π View Complete Figma Design
| Frontend | Backend | Database | Others |
|---|---|---|---|
| React.js (MERN) | Node.js + Express.js | MongoDB | Redux, JWT, Razorpay API, Bootstrap, Figma |
Great question! Let me break down the π Project Structure section for you clearly. This part in the README gives an overview of how the folders and files are organized in your Priscripto project, so developers can easily navigate and understand the codebase.
Here's a more detailed and realistic Project Structure for your Priscripto project:
-
POST /api/user/register- Register a new user- Body:
{ name, email, password } - Response:
{ success, token }
- Body:
-
POST /api/user/login- Login user- Body:
{ email, password } - Response:
{ success, token }
- Body:
-
GET /api/user/get-profile- Get user profile- Headers:
{ token } - Response:
{ success, userData }
- Headers:
-
POST /api/user/update-profile- Update user profile- Headers:
{ token } - Body: FormData with fields:
- name
- phone
- address (JSON string)
- gender
- dob
- socialLinks (JSON string)
- skills (JSON string)
- image (file)
- Headers:
GET /api/auth/google- Google OAuth loginGET /api/auth/github- GitHub OAuth login
GET /api/doctor/list- Get list of all doctors- Response:
{ success, doctors }
- Response:
-
POST /api/appointment/book- Book an appointment- Headers:
{ token } - Body:
{ doctorId, date, time, etc. }
- Headers:
-
GET /api/appointment/my-appointments- Get user's appointments- Headers:
{ token }
- Headers:
GET /api/ward/list- Get all wardsPOST /api/ward/create- Create new wardPUT /api/ward/:id- Update wardDELETE /api/ward/:id- Delete wardPOST /api/ward/:wardId/admit- Admit patientPOST /api/ward/:wardId/discharge- Discharge patient
-
GET /api/prescriptions/templates- Get prescription templates -
POST /api/prescriptions/templates- Save prescription template- Body:
{ name, description, medicines, diagnosis }
- Body:
-
GET /api/prescriptions/history/:patientName- Get patient prescription history
-
GET /api/testimonials/doctor/:doctorId- Get doctor testimonials- Query params:
page,limit
- Query params:
-
POST /api/testimonials/submit- Submit testimonial- Headers:
{ token } - Body:
{ doctorId, rating, content }
- Headers:
-
GET /api/user/google-fit/status- Check Google Fit connection status- Headers:
{ Authorization: Bearer <token> }
- Headers:
-
GET /api/user/google-fit/auth-url- Get Google Fit authorization URL- Headers:
{ Authorization: Bearer <token> }
- Headers:
-
GET /api/user/google-fit/data- Get user's fitness data- Headers:
{ token }
- Headers:
POST /api/community/create-post- Create community post- Headers:
{ Authorization: Bearer <token> } - Body:
{ title, content, tags, userId }
- Headers:
-
POST /api/packages/create-order- Create payment order- Headers:
{ Authorization: Bearer <token> } - Body:
{ packageType }
- Headers:
-
POST /api/packages/verify-payment- Verify payment- Headers:
{ Authorization: Bearer <token> } - Body:
{ razorpay_order_id, razorpay_payment_id, razorpay_signature, packageType }
- Headers:
GET /api/login-history/history- Get user login history- Headers:
{ token } - Query params:
page,limit
- Headers:
POST /api/user/get-qr-code- Generate QR code for donation- Headers:
{ token }(optional) - Body:
{ orderId }
- Headers:
All APIs follow a consistent response format:
{
"success": boolean,
"message": string,
"data": any,
"error": string (optional)
}Most APIs require authentication using JWT tokens. Include the token in the request headers:
headers: {
'Authorization': 'Bearer <token>'
// or
'token': '<token>'
}The API uses standard HTTP status codes:
- 200: Success
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
- 500: Internal Server Error
Error responses include a message explaining the error:
{
"success": false,
"message": "Error description",
"error": "Detailed error information"
}The API implements rate limiting to prevent abuse. Exceeding the rate limit will return a 429 (Too Many Requests) status code.
Frontend environment variables required:
VITE_BACKEND_URL=http://localhost:5000
VITE_USE_LOCAL_PROXY=true/falseTo run the project locally:
- Clone the repository
- Install dependencies:
npm install - Set up environment variables
- Start development server:
npm run dev
For production deployment:
- Build the project:
npm run build - Set production environment variables
- Deploy the built files
- All sensitive routes are protected with JWT authentication
- Passwords are hashed before storage
- CORS is configured for security
- Rate limiting is implemented
- Input validation on all endpoints
- Secure headers are implemented