- Introduction
- Pitch
- Hogwarts
- Live Demo
- MVP
- Roadmap
- Launch Sprint
- PRD
- Get Started
- Localhost
- Architecture
- Structure
- Pattern
- Page
- Layout
- Content
- Types
- Config
- Actions
- Queries
- Authorization
- Validation
- Form
- Table
- Detail
- Card
- Util
- Hooks
- List Params
- Views
- README.md
- ISSUE.md
- Technology Stack
- Database
- File
- CDN Assets
- Entry Points
- Dashboard
- Authentication
- Credentials
- OAuth
- Flow Diagrams
- Multi-Tenancy
- Offline
- Onboarding
- Onboarding Videos
- Add Values
- Admission
- Application
- Attendance
- Compliance
- Profile
- Exams
- Exam Wizard
- Timetable
- Classrooms
- Notifications
- Conference
- LMS (Lumos)
- Finance
- Fee Management
- Invoice
- Wallet
- Salary
- Payroll
- Timesheet
- Expenses
- Budget
- Receipt
- Accounts
- Banking
- Reports
- Dashboard
- Permissions
- Messages
- Integration Flow
- Provision
- AI Document Processing
- Document Intelligence
- Internationalization
- Translation
- Translation Guide
- Icons
- Docs Factory
- Inspiration
- Listings
- Teachers
- Students
- Catalog
- Library
- Contributing
- Code of conduct
- GitHub Workflow
- Database Seeds
- Database Safety
- Test Accounts
- Playwright
- Prettier
- Block Rebound
All changes go through pull requests → review → CI → merge. The main branch is protected: no force pushes, no deletes, no merging without approval.
Branch protection
| Required | Blocked |
|---|---|
| Pull request for all changes | Force pushes |
1 approval from a CODEOWNERS member | Deleting main |
| All CI checks passing | Merge without approval |
| Conversation resolution |
PR flow
# 1. Fork via GitHub UI, then clone your fork
git clone git@github.com:YOUR_USERNAME/hogwarts.git
cd hogwarts
git remote add upstream git@github.com:abdout/hogwarts.git
# 2. Branch from latest main
git checkout main
git pull upstream main
git checkout -b feat/your-feature-name
# 3. Commit with a conventional message
git add .
git commit -m "feat(platform): add attendance export to CSV"
# 4. Push and open the PR via GitHub
git push origin feat/your-feature-nameBranch prefixes
| Branch prefix | Use |
|---|---|
feat/ | New features |
fix/ | Bug fixes |
docs/ | Documentation |
refactor/ | Refactoring |
chore/ | Tooling, infra |
test/ | Test-only work |
Examples from this repo: feat/transportation-production-ready, fix/credentials-dialog, docs/fumadocs-shiki.
Commit format (SSOT)
Format: category(scope): description. This is the canonical reference — contributing.mdx links here.
| Category | Use for |
|---|---|
feat / feature | New code, new features |
fix | Bug fixes (link issue if present) |
refactor | Code change that's not a fix nor a feature |
docs | Docs only |
build | Build / dependency changes |
test | New or updated tests |
ci | CI / GitHub Actions changes |
style | Formatting only |
chore | Anything else |
Use the folder name as scope:
feat(marketing) # SaaS marketing
feat(operator) # SaaS dashboard
feat(site) # School marketing
feat(platform) # School dashboard
feat(auth) # Authentication
feat(onboarding) # Onboarding flow
feat(ui) # shadcn/ui primitives
feat(atom) # Atomic components
feat(template) # Templates / sections
fix(docs) # Doc fixes
See conventionalcommits.org for the upstream spec.
CI checks
Every PR runs pr-check.yml:
| Job | Purpose |
|---|---|
typecheck | pnpm tsc --noEmit |
lint | ESLint |
test | Vitest unit tests |
build | Production build |
Security: codeql.yml scans on every PR + weekly. Dependencies: dependabot.yml opens grouped PRs every Monday.
Auto-labels
| Label | Files |
|---|---|
area: platform | src/components/school-dashboard/** |
area: auth | src/auth*, auth.ts |
area: database | prisma/** |
area: docs | docs/**, content/**, *.md |
area: ui | src/components/ui/** |
type: ci | .github/** |
type: tests | *.test.*, tests/** |
Stale: issues / PRs marked stale after 30 days, closed after 7 more. Exempt labels: pinned, security, help wanted, good first issue.
CODEOWNERS
* @abdout
/src/components/school-dashboard/ @abdout
/prisma/ @abdout
/src/auth* @abdout
/.github/ @abdout
Modifying these paths auto-requests the owner.
Issue templates
Bug reports include description, repro, expected vs actual, screenshots, browser/OS, area. Feature requests include problem, proposed solution, alternatives, priority. Doc issues include location, what's wrong, suggested improvement.
Security
Don't open public issues for vulnerabilities — email security@databayt.org (response within 48 hours). See SECURITY.md.
When contributing:
- Always include
schoolIdin DB queries (multi-tenant safety). - Use Zod schemas for input validation.
- Never commit secrets or credentials.
- Keep dependencies up to date.
Pre-PR checklist
pnpm tsc --noEmitcleanpnpm lintcleanpnpm testgreen- Tested locally
- Docs updated if needed
- PR template filled out
Essential git
# Stay synced with upstream
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
# Rebase your feature branch
git checkout feat/your-feature
git rebase main
# Undo last commit (keep changes)
git reset --soft HEAD~1
# Delete local + remote branch
git branch -d feat/your-feature
git push origin --delete feat/your-feature