AMASI Faculty Management System - Development Guide
A comprehensive event management platform for AMASI (Association of Medical Superintendents of India) built with Next.js 16, React 19, Supabase, and TypeScript.
Install in one line
CLI$ mfkvault install prabhugems-amasi-managementRequires the MFKVault CLI. Prefer MCP?
Free to install — no account needed
Copy the command below and paste into your agent.
Instant access • No coding needed • No account needed
What you get in 5 minutes
- Full skill code ready to install
- Works with 4 AI agents
- Lifetime updates included
Description
# AMASI Faculty Management System - Development Guide ## Project Overview A comprehensive event management platform for AMASI (Association of Medical Superintendents of India) built with Next.js 16, React 19, Supabase, and TypeScript. ## Tech Stack - **Frontend:** Next.js 16 (App Router), React 19, TypeScript - **Backend:** Next.js API Routes + Supabase - **Database:** PostgreSQL (Supabase) - **Auth:** Supabase Magic Link (passwordless) - **UI:** Radix UI components + Tailwind CSS - **State:** TanStack React Query - **Forms:** React Hook Form + Zod - **Payments:** Razorpay - **Email:** Resend - **Desktop App:** Electron (print-station-app) ## Directory Structure ``` amasi-faculty-management/ ├── src/ │ ├── app/ # Next.js App Router pages & API routes │ │ ├── (auth)/ # Auth pages (login) │ │ ├── (dashboard)/ # Main admin dashboard │ │ ├── api/ # API routes (65+ endpoints) │ │ ├── f/[formSlug]/ # Public form pages │ │ ├── register/ # Public event registration │ │ └── membership/ # Membership signup │ ├── components/ # React components │ │ ├── ui/ # Base UI components (53 components) │ │ ├── dashboard/ # Dashboard-specific components │ │ ├── events/ # Event management components │ │ ├── forms/ # Form builder components │ │ └── registration/ # Registration flow components │ ├── lib/ # Utilities & services │ │ ├── supabase/ # Supabase client configs │ │ ├── types/ # TypeScript type definitions │ │ └── utils.ts # Helper functions │ ├── hooks/ # Custom React hooks │ └── middleware.ts # Auth middleware ├── print-station-app/ # Electron desktop app for badge printing ├── supabase/ # Supabase migrations & config └── supabase-schema.sql # Database schema reference ``` ## Key Features ### 1. Event Management (`/events`) - Create/edit events with settings - Event types: conference, course, workshop, webinar, meeting - Status flow: draft → setup → planning → active → completed → archived ### 2. Ticketing (`/events/[eventId]/tickets`) - Multiple ticket types per event - Pricing with tax support - Inventory management - Early bird & group pricing ### 3. Registration (`/register/[eventSlug]`) - Public registration flow - Individual & group registrations - Multi-step forms - Discount codes ### 4. Form Builder (`/forms`) - Drag-drop form creation - 15+ field types - Conditional logic - Multi-step forms - Public form sharing via slug ### 5. Check-in System (`/check-in`) - QR code scanning - Real-time statistics - Badge printing trigger ### 6. Badge Printing - Desktop app (Electron) at `/print-station-app` - Zebra printer integration (ZPL) - QR lookup → Generate ZPL → TCP print ### 7. Certificates - Template management - Auto-generation for attendees/speakers - PDF generation with pdf-lib ### 8. Payments (Razorpay) - Order creation - Webhook verification - Reconciliation - Refund processing ### 9. Member Database - 17,000+ AMASI members - Membership plans & subscriptions - Voting eligibility tracking ## Database Schema (Key Tables) ```sql -- Core entities events -- Event records ticket_types -- Ticket offerings per event registrations -- Event registrations payments -- Payment transactions members -- AMASI member database faculty -- Faculty/speaker profiles -- Forms system forms -- Form templates form_fields -- Field definitions form_sections -- Multi-step organization form_submissions -- Response data -- Operations print_stations -- Kiosk configurations checkin_lists -- Check-in sessions checkin_records -- Individual check-ins badge_templates -- Badge designs certificate_templates -- Certificate designs ``` ## API Routes Quick Reference ### Events - `GET/POST /api/events` - List/create events - `GET/PUT/DELETE /api/events/[eventId]` - Event CRUD - `GET/POST /api/events/[eventId]/tickets` - Ticket management ### Registrations - `GET/POST /api/registrations` - Registration management - `POST /api/registrations/group` - Group registrations - `POST /api/registrations/import` - Bulk import ### Payments - `POST /api/payments/razorpay/create-order` - Create order - `POST /api/payments/razorpay/verify` - Verify payment - `POST /api/payments/razorpay/webhook` - Webhook handler - `POST /api/discounts/validate` - Validate discount code ### Forms - `GET/POST /api/forms` - Form CRUD - `GET /api/forms/public/[slug]` - Public form access - `POST /api/forms/[formId]/publish` - Publish form - `GET/POST /api/forms/submissions` - Submissions ### Print Station - `GET /api/print/lookup?code=XXX` - Lookup registration - `POST /api/print-stations/print` - Record print job - `POST /api/print-stations/zpl-print` - Generate ZPL ### Check-in - `POST /api/checkin` - Check-in attendee - `GET /api/checkin/stats` - Statistics ## Authentication - **Method:** Supabase Magic Link (email-based, passwordless) - **Protected routes:** Dashboard, events, faculty, delegates, certificates, etc. - **Public routes:** `/login`, `/register/*`, `/f/*`, `/api/payments/*` - **Middleware:** `src/middleware.ts` enforces auth ### User Roles - `super_admin` - Full system access - `admin` - Event management - `coordinator` - Event logistics - `user` - Basic access ## Key Components ### UI Components (`src/components/ui/`) 53 Radix-based components: Button, Dialog, Select, Tabs, Table, Toast, etc. ### Dashboard Components - `StatCard` - KPI display - `EventsTable` - Event listing - `AlertsPanel` - Notifications - `QuickStats` - Summary metrics ### Form Components - `FormBuilder` - Drag-drop builder - `FormRenderer` - Render published forms - `FormFieldRenderer` - Individual field rendering ## Utilities (`src/lib/`) ### Supabase Clients ```typescript import { createClient } from '@/lib/supabase/client' // Client-side import { createServerSupabaseClient } from '@/lib/supabase/server' // Server-side import { createAdminClient } from '@/lib/supabase/admin' // Service role ``` ### Common Helpers (`src/lib/utils.ts`) ```typescript cn() // Tailwind class merging slugify() // URL slug generation formatDate() // Date formatting formatCurrency() // Currency formatting generateId() // UUID generation ``` ## Environment Variables ```env NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key NEXT_PUBLIC_APP_URL=http://localhost:3000 NEXT_PUBLIC_APP_NAME=AMASI Command Center RESEND_API_KEY=your-resend-api-key [email protected] ``` ## Development Commands ```bash npm run dev # Start development server npm run build # Build for production npm run start # Start production server npm run lint # Run ESLint npm run db:check # Verify database setup ``` ## Print Station App Located in `/print-station-app` - Electron desktop application: ```bash cd print-station-app npm install npm start # Development npm run build:mac # Build macOS .dmg npm run build:win # Build Windows .exe ``` Features: - USB barcode scanner support - Zebra printer integration (ZPL over TCP:9100) - Real-time registration lookup - Badge generation ## Common Workflows ### Adding a New Event Page 1. Create route in `src/app/(dashboard)/events/[eventId]/your-page/page.tsx` 2. Add to event sidebar in `src/components/events/event-sidebar.tsx` 3. Create API routes if needed in `src/app/api/` ### Adding a Form Field Type 1. Add type to `src/lib/types/forms.ts` 2. Update `FormFieldRenderer` in `src/components/forms/` 3. Update form builder field palette ### Adding an API Route 1. Create file in `src/app/api/your-route/route.ts` 2. Export GET/POST/PUT/DELETE handlers 3. Use `createServerSupabaseClient()` for auth 4. Use `createAdminClient()` for service-role operations ## Type Definitions Key types are in `src/lib/types/`: - `events.ts` - Event, Session, TicketType - `forms.ts` - Form, FormField, FormSubmission - `registration.ts` - Registration, Payment - `members.ts` - Member, Faculty ## Notes for Development 1. **Always use typed Supabase queries** - Types are auto-generated 2. **Check middleware.ts** for protected route patterns 3. **Form builder uses @dnd-kit** for drag-drop 4. **Tables use @tanstack/react-table** for data display 5. **Toast notifications use sonner** - `toast.success()`, `toast.error()` 6. **Use React Query** for server state - check existing hooks for patterns 7. **Payments require webhook verification** - Don't trust client-side payment status
Security Status
Unvetted
Not yet security scanned
Related AI Tools
More Make Money tools you might like
Social Autoposter
Free"Automate social media posting across Reddit, X/Twitter, LinkedIn, and Moltbook. Find threads, post comments, create original posts, track engagement stats. Use when: 'post to social', 'social autoposter', 'find threads to comment on', 'create a post
PICT Test Designer
FreeDesign comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code. Analyzes inputs, generates PICT models with parameters, values, and constraints for valid scenarios using pairwise testing.
Product Manager Skills
FreePM skill for Claude Code, Codex, Cursor, and Windsurf. Diagnoses SaaS metrics, critiques PRDs, plans roadmaps, runs discovery, coaches PM career transitions, pressure-tests AI product decisions, and designs PLG growth strategies. Seven knowledge doma
paper-fetch
FreeUse when the user wants to download a paper PDF from a DOI, title, or URL via legal open-access sources. Tries Unpaywall, arXiv, bioRxiv/medRxiv, PubMed Central, and Semantic Scholar in order. Never uses Sci-Hub or paywall bypass.
Beautiful Prose (Claude Skill)
FreeA hard-edged writing style contract for timeless, forceful English prose without modern AI tics. Use when users ask for prose or rewrites that must be clean, exact, concrete, and free of AI cadence, filler, or therapeutic tone.
SkillCheck (Free)
FreeValidate Claude Code skills against Anthropic guidelines. Use when user says "check skill", "skillcheck", "validate SKILL.md", or asks to find issues in skill definitions. Covers structural and semantic validation. Do NOT use for anti-slop detection,