A full-stack appointment booking platform built with React (Vite) on the frontend and Node.js + Express + Prisma (Postgres) on the backend. The app supports role-based users (Admin / Organiser / Customer), service management, booking, reminders, Stripe payments, and email notifications.
🎥 Demo / Walkthrough
- Watch the demo video: https://youtu.be/_dAWX9gQhEg
- User registration, login, and role-based access
- Create and manage services (duration, price, questions, capacity)
- Bookings with optional payment via Stripe
- Resource & provider assignment (auto or manual)
- Reminders via scheduled jobs and email
- Prisma ORM with Postgres migrations and seed data
- Frontend: React (Vite)
- Backend: Node.js, Express
- Database: PostgreSQL (Prisma)
- Payments: Stripe
- Email: Nodemailer
- Dev tooling: Nodemon, dotenv, Prisma CLI
Prerequisites:
- Node.js (>= 18)
- npm or yarn
- Docker (optional, recommended for local Postgres)
- Clone the repo
git clone <repo-url>
cd APPoint- Start Postgres (docker-compose recommended)
docker compose up -d- Environment variables
Create a .env file in /Backend (see /Backend/.env.example if provided). Important vars used by the app:
DATABASE_URL=postgres://postgres:mypassword@localhost:5433/appointment_app
JWT_SECRET=your_jwt_secret
STRIPE_SECRET_KEY=sk_test_...
EMAIL_USER=your_email@example.com
EMAIL_PASSWORD=your_email_password
FROM_NAME="Appointment App"
PORT=5000
FRONTEND_URL=http://localhost:5173
- Install & prepare the backend
cd Backend
npm install
# apply migrations (migrations are included)
npx prisma migrate deploy
# seed the DB
npm run prisma:seed || node prisma/seed.js
npm run devNotes: If you prefer iterative development you can also run npx prisma migrate dev when creating new migrations.
- Install & run the frontend
cd ../Frontend
npm install
npm run devThe frontend runs by default on http://localhost:5173 (Vite) and the backend defaults to http://localhost:5000.
-
Backend/
server.js— express entry pointsrc/controllers— route handlerssrc/lib/prisma.js— Prisma clientprisma/— schema, migrations, seed
-
Frontend/
src/— React app (components, pages)
No automated tests are included yet. Contributions adding unit, integration, or E2E tests are welcome.
Contributions are welcome — please open issues or PRs. For larger changes, please open an issue first to discuss the approach.
This project is provided without a license file. Add a license as appropriate for your use.
If you have questions or want to collaborate, open an issue or contact the maintainer.