Fullstack CRUD application for managing patient records, built to explore a Node.js/Express + Vue 3 stack in a healthcare context.
- List, create, update and delete patients
- View patient details
- Client-side routing (Vue Router)
- Centralized error handling (custom
ApiErrorclass) - REST API with layered backend architecture
| Layer | Technologies |
|---|---|
| Backend | Node.js, Express 5, SQLite3, CORS |
| Frontend | Vue 3.5, Vue Router, Vite |
| Architecture | Controller / Service / Repository |
backend/src/
├── controllers/ # HTTP request handling
├── services/ # Business logic
├── repositories/ # Database queries (SQLite)
├── routes/ # API route definitions
├── middlewares/ # Error handler, 404
└── utils/ # ApiError class
frontend/src/
├── views/ # PatientListView, PatientCreateView, PatientEditView
├── components/ # PatientList, PatientForm
├── api/ # PatientApi (fetch wrapper)
└── router/ # Vue Router config
Prerequisites: Node.js 18+
cd backend
npm install
npm run dev # starts on http://localhost:3000cd frontend
npm install
npm run dev # starts on http://localhost:5173| Method | Route | Description |
|---|---|---|
| GET | /patients |
List all patients |
| GET | /patients/:id |
Get patient by ID |
| POST | /patients |
Create a patient |
| PUT | /patients/:id |
Update a patient |
| DELETE | /patients/:id |
Delete a patient |
Hugo Walle — github.com/hugowalledev