Project: ethiopian-teacher-rostering
# Ethiopian Teacher Rostering System
A modern, smart web application for managing Ethiopian teacher rosters with simple interface and powerful features.
## 🎯 Features
- ✨ **Teacher Profile Management** - Add, edit, view, and delete teacher information
- 🔍 **Smart Search & Filter** - Find teachers by name, subject, school, or region
- 📸 **Profile Pictures** - Upload and manage teacher profile images
- 📱 **Responsive Design** - Works seamlessly on desktop and mobile devices
- 🔐 **Secure Authentication** - Built with Supabase for data security
- 🚀 **Real-time Updates** - Instant data synchronization across sessions
- 📊 **Teacher Statistics** - Overview of teachers by region, subject, and school
## 🛠️ Tech Stack
- **Frontend:** React 18 + TypeScript + Vite
- **UI Components:** shadcn/ui + Tailwind CSS
- **Backend/Database:** Supabase (PostgreSQL)
- **Authentication:** Supabase Auth
- **File Storage:** Supabase Storage
- **State Management:** React Query (TanStack Query)
- **Forms:** React Hook Form + Zod Validation
## 📋 Quick Start
### Installation
```bash
npm install
# or
bun install
```
### Development
```bash
npm run dev
```
The app will be available at `
localhost`
### Build
```bash
npm run build
```
### Preview Production Build
```bash
npm run preview
```
## 🗄️ Database Schema
### Teachers Table
```sql
CREATE TABLE teachers (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR NOT NULL,
phone_number VARCHAR,
email VARCHAR UNIQUE NOT NULL,
subjects TEXT[] NOT NULL DEFAULT '{}',
school_name VARCHAR,
region VARCHAR NOT NULL,
qualifications TEXT,
biography TEXT,
profile_image_url VARCHAR,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
```
## 🏗️ Project Structure
```
src/
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── teacher/
│ │ ├── TeacherList.tsx
│ │ ├── TeacherForm.tsx
│ │ ├── TeacherProfile.tsx
│ │ ├── TeacherCard.tsx
│ │ …