The SUNY Canton EMS Portal is a full-stack application for EMS organizations to manage certifications, calls, inventory, buildings, and member records in one place. It provides a unified workflow so coordinators can keep compliance data, incident logs, and readiness metrics up to date without juggling spreadsheets.
- Centralize operational data (members, certifications, equipment, buildings).
- Track call history with structured forms, status, and notes.
- Surface expiring certifications and low inventory before they become issues.
- Provide a secure self-service dashboard for members to review their profile and training status.
- Dashboards with stats cards, recent call feeds, and certification alerts.
- Certification tracking with renewal reminders and card previews.
- Call logging for incident details, crew members, and outcomes.
- Inventory management including quantity thresholds and usage stats.
- Member management with profile photos, role assignments, and contact info.
- Building registry for station locations, apparatus bays, and notes.
- Authentication with registration, login, profile editing, and password reset flows.
Next.js 15App Router for combined frontend/backend routes.React 19with server components where possible.Mantine 8UI library plus Tabler icons for consistent styling.PrismaORM with a PostgreSQL-compatible database.NextAuth-style custom auth helpers (seesrc/lib/auth*).
src/app– App Router routes, including/dashboard/*sections and API routes.src/components– Mantine-based UI building blocks (forms, tables, stats cards).src/lib– Prisma client, auth helpers, shared utilities, and client/server services.prisma– Schema and migrations for members, certifications, inventory, and file storage.
- Install dependencies
npm install
- Set environment variables – copy
.env.exampleto.env.localand fill in database URL, auth secrets, SMTP credentials, and any storage providers. - Generate Prisma client
npx prisma generate
- Apply migrations (creates local database schema)
npx prisma migrate dev --name init
- Start the dev server
npm run dev
- Open
http://localhost:3000and sign up for an account via/registeror seed an admin user through Prisma Studio (npx prisma studio).
npm run dev– start Next.js in development mode with hot reloading.npm run build– create an optimized production build.npm start– run the compiled production server.npm run lint– lint source files vianext lintand the unified ESLint config.
The project ships as a standard Next.js application. Deploy to Vercel or any platform that supports Node.js 18+:
- Configure production environment variables (database, auth secrets, SMTP).
- Run
npm run buildas the CI build step. - Run migrations during deployment (
npx prisma migrate deploy). - Start the Next.js server with
npm startor the platform's Next.js adapter.
Open issues or submit pull requests for bug fixes and feature requests. Please include database migration files when modifying the Prisma schema and add relevant tests where possible.