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)