0%
balqalam Logo
balqalam
FeaturesCommunityPricingDocumentation
Login
  • Introduction
  • Help center
  • Common questions
  • 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
  • Bulk import
  • Playwright
  • Prettier
  • Block Rebound
  • Transportation

GitHub Workflow

PreviousNext

Branch protection, pull-request flow, CI checks, and CODEOWNERS for contributing to Balqalam.

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

RequiredBlocked
Pull request for all changesForce pushes
1 approval from a CODEOWNERS memberDeleting main
All CI checks passingMerge 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-name

Branch prefixes

Branch prefixUse
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.

CategoryUse for
feat / featureNew code, new features
fixBug fixes (link issue if present)
refactorCode change that's not a fix nor a feature
docsDocs only
buildBuild / dependency changes
testNew or updated tests
ciCI / GitHub Actions changes
styleFormatting only
choreAnything 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:

JobPurpose
typecheckpnpm tsc --noEmit
lintESLint
testVitest unit tests
buildProduction build

Security: codeql.yml scans on every PR + weekly. Dependencies: dependabot.yml opens grouped PRs every Monday.

Auto-labels

LabelFiles
area: platformsrc/components/school-dashboard/**
area: authsrc/auth*, auth.ts
area: databaseprisma/**
area: docsdocs/**, content/**, *.md
area: uisrc/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 schoolId in 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 --noEmit clean
  • pnpm lint clean
  • pnpm test green
  • 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

See also

  • Contributing
  • Code of conduct
  • Conventional Commits
Code of conductDatabase Seeds

On This Page

Branch protectionPR flowBranch prefixesCommit format (SSOT)CI checksAuto-labelsCODEOWNERSIssue templatesSecurityPre-PR checklistEssential gitSee also

Built by Databayt ·

Welcome to balqalam.

A great journey is about to begin.