A comprehensive full-stack web application for managing Quran schools, designed to support multiple user roles including Teachers, Admins, Parents, and Students. The platform enables streamlined class tracking, student progress monitoring, attendance recording, and reporting through an intuitive, responsive interface.
This is a monorepo containing both frontend and backend applications:
- Client: React-based frontend with modern tooling
- Server: Hono-based backend API with PostgreSQL database
- Shared: Common types and utilities between client and server
- Framework: React 19 with TypeScript
- Build Tool: Vite
- UI Library: Ant Design (AntD)
- State Management: Redux Toolkit
- Routing: React Router v7
- Localization: i18next (Arabic + English support)
- Styling: SCSS with CSS modules
- Runtime: Bun
- Framework: Hono
- Database: PostgreSQL with Drizzle ORM
- Authentication: Better Auth
- Language: TypeScript
- View assigned classes (
/my-classes) - View students across all their classes (
/my-students) - Search students or classes (
/find-student,/find-class) - View class details (
/view-class/:id) - Export data to CSV format
- Run class sessions (planned)
- View list of linked children/students on login
- Navigate to student report dashboard
- View Quran progress, success rate, attendance, class history
- Print or download student reports
- Add/manage users, roles, classes, and tasks
- Assign teachers to classes
- Review overall system reports and data exports
- Bun (recommended) or Node.js 18+
- PostgreSQL database
git clone https://github.com/zurghani/halakaa.git
cd halakaabun installCreate /server/.env based on /server/.env.example:
cd server
cp .env.example .env
# Edit .env with your database and authentication settingsCreate /client/.env if needed for client-specific environment variables.
# Push schema to database
bun run db:push
# Seed database with initial data
bun run db:seedbun run dev# Start server (http://localhost:3000)
bun run dev:server
# Start client (http://localhost:5173)
bun run dev:client
bun run build# Build server - you need to build this before you run the Client.
bun run build:server
# Build client
bun run build:clientThe application supports both Arabic and English with automatic text direction handling:
import { useTranslation } from "react-i18next";
const { i18n } = useTranslation();
i18n.changeLanguage("ar"); // Switch to Arabic
i18n.changeLanguage("en"); // Switch to Englishhalakah/
├── client/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Route components
│ │ ├── store/ # Redux store configuration
│ │ ├── locales/ # i18n translations
│ │ └── types.ts # TypeScript definitions
│ └── package.json
├── server/ # Hono backend application
│ ├── src/
│ │ ├── modules/ # API route modules
│ │ ├── db/ # Database schema and migrations
│ │ ├── middleware/ # Custom middleware
│ │ └── index.ts # Server entry point
│ └── package.json
├── shared/ # Shared utilities and types
└── package.json # Root workspace configuration
bun run dev- Start both client and server in development modebun run build- Build both applications for productionbun run dev:client- Start only the client applicationbun run dev:server- Start only the server application
bun run dev- Start server in development modebun run build- Build server for productionbun run db:reset- Reset databasebun run db:gen- Generate database migrationsbun run db:push- Push schema changes to databasebun run db:seed- Seed database with initial data
bun run dev- Start client in development modebun run build- Build client for productionbun run lint- Run ESLintbun run format- Format code with Prettierbun run preview- Preview production build
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private and proprietary.
- Frontend: http://localhost:3000 (development)
- Backend API: http://localhost:4000 (development)