A full-stack web application & school management system for Biruh Tesfa Academy (Injibara) featuring online registration, bilingual support (Amharic/English), automated fee management, student portal, and director dashboard.
# Biruh Tesfa Academy — Web Application
A full-stack web application for **Biruh Tesfa Academy**, a private school in Injibara town
serving students from **KG1–KG3** and **Grade 1–6**. Public registration, a bilingual
(English/Amharic) parent-facing site, a student portal for learning materials, and a
director admin dashboard for approvals and content management.
## Tech Stack
| Layer | Technology |
|------------|------------|
| Frontend | React.js, Tailwind CSS, `react-i18next`, `axios`, `react-router-dom` |
| Backend | Node.js, Express.js, `multer` |
| Database | MySQL (via `mysql2`) |
| Auth | JWT (`jsonwebtoken`) + `bcrypt` for the director/admin login |
## Project Structure
```
biruh-tesfa-academy/
├── backend/
│ ├── config/
│ │ └── multer.js # File upload configuration (receipts, PDFs, images)
│ ├── controllers/ # Route logic (one file per resource)
│ ├── database/
│ │ └── schema.sql # Full MySQL schema + seed director account
│ ├── middleware/
│ │ ├── auth.js # JWT verification for admin routes
│ │ └── errorHandler.js # Centralized error + 404 handling
│ ├── routes/ # Express routers (one file per resource)
│ ├── uploads/ # Uploaded files land here (gitignored in practice)
│ │ ├── receipts/
│ │ ├── resources/
│ │ ├── announcements/
│ │ └── gallery/
│ ├── .env.example
│ ├── db.js # MySQL connection pool
│ ├── package.json
│ └── server.js # App entrypoint
│
└── frontend/
├── public/
│ └── index.html
├── src/
│ ├── api/
│ │ └── axiosClient.js # Shared axios instance + JWT interceptor
│ ├── components/ # Navbar, LanguageToggle, AnnouncementBoard, Gallery
│ ├── i18n/
│ │ ├── i18n.js
│ │ └── locales/
│ │ ├── en.json
│ │ └── am.json
│ ├── pages/ # HomePage, RegistrationPage, StudentPortal,
│ │ …