Hospital staff and patient portal for clinic work : folders, visits, vitals, consults, lab, pharmacy, billing, wards, and appointments. React, Express, and SQLite. currency in Ghana cedis (GH₵).
# Clinic Management System
Hospital staff portal and patient portal for day-to-day clinic work: folders, visits, vitals, consults, lab, pharmacy, billing, appointments, ward, theatre, claims, inventory, HR, audit, and backups.
The public address is a **hospital landing page**, not a blank form. It shows the municipal hospital header, a photo of the entrance, department cards (reception, OPD, nursing, laboratory, pharmacy, imaging, ward, theatre, maternity, specialist clinics, physiotherapy, accounts), posted hours, and a **Staff sign-in** card.
Staff sign in with **username or email**, plus the password. There is no authenticator code.
- Hospital landing / staff sign-in:
localhost
- Staff app (after sign-in):
localhost
- Patient portal:
localhost
- Hospital API:
127.0.0.1
Posted hours on the landing page: **OPD 7:00–17:00 · Pharmacy 8:00–20:00 · Laboratory 7:30–16:00**. Emergency is marked **24 hours**. NHIS and cash are accepted.
A longer operations guide is in `Clinic-Management-System-Guide.docx`.
## Run
Requires **Node.js 20+**.
```bash
npm install
npm run dev
```
That starts the Vite frontend and the Express API together. Open
localhost.
| Command | What it does |
| --- | --- |
| `npm run dev` | Website on port 5173 and API on port 4000 |
| `npm run dev:web` | Frontend only |
| `npm run dev:api` | API only |
| `npm run build` | Production frontend build |
| `npm start` | API only (no Vite watch) |
| `npm test` | Frontend unit tests (Vitest) |
| `npm run lint` | ESLint |
| `npm run format` | Prettier |
A session ends after **15 minutes** of no activity. **Five** failed sign-ins lock that desk for **one minute**.
## Languages and stack
| Layer | Language / tool | Used for |
| --- | --- | --- |
| App logic | **TypeScript** | Frontend and backend source |
| UI | **React 18**, **HTML** | Staff and portal screens |
| Styling | **Tailwind CSS**, **PostCSS**, **Autoprefixer** …