Hackathon Project
Cloud-Native
Event CRM
AWS
CampOps — Event Management CRM (Case Study)
Cloud-native platform that streamlines event planning, volunteer coordination, sponsor management, and attendee engagement. Built with Next.js, Node.js, TypeScript, PostgreSQL, and deep AWS integrations for scalability, security, and performance.
Features
15+
Tech Stack
10+ Tools
AWS Services
8+ Services
Build Time
48 Hours


Technology Stack
Frontend
Next.js 16
React 19
Tailwind CSS 4
RTK + RTK Query
MUI • Lucide
Recharts • Gantt
Backend & Infra
Node 18 • Express 5
Prisma 6
AWS Cognito
AWS EC2 + ALB
RDS Postgres 15
S3 • CloudFront • Route53
Executive Summary
CampOps centralizes events, volunteers, sponsors, RSVPs and tasks in one place, with AI-powered risk analysis and automated communications. Built during a hackathon with AWS cloud-native architecture, showcasing full-stack development, authentication, and scalable infrastructure design.
AWS CloudFront CDN
│
AWS Amplify (Next.js) ───── AWS Cognito (Auth)
│
Application Load Balancer
│
EC2 Auto Scaling Group (Express API)
│
Amazon RDS (PostgreSQL)
S3 (Attachments • Static Assets)
Secrets Manager • CloudWatch • SNS • SES • Route 53Key Features
Event Ops
- Multiple views: Board, List, Table, Timeline, Details
- Status tracking, capacity, waitlists, check-ins
- Global search + advanced filtering
Teams & Roles
- Multi-org support, RBAC (admin/organizer/volunteer)
- Real-time collaboration and profiles
AI & Automation
- Risk detection: low RSVPs, overdue/unassigned critical tasks
- Actionable suggestions, severity levels
- Automated emails: reminders, assignments, thank-yous
Sponsors & Comms
- Pipeline stages, pledges and payments
- Template-driven personalized emails
Selected Implementation
1) S3 Upload Service
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
const s3Client = new S3Client({ region: 'us-east-1' });
export async function uploadAttachment(file: Buffer, fileName: string) {
const command = new PutObjectCommand({
Bucket: process.env.S3_ATTACHMENTS_BUCKET,
Key: `attachments/${Date.now()}-${fileName}`,
Body: file,
ContentType: getContentType(fileName),
});
await s3Client.send(command);
return getSignedUrl(s3Client, command, { expiresIn: 900 });
}2) Cognito Auth (USER_PASSWORD_AUTH)
import { CognitoIdentityProviderClient, InitiateAuthCommand } from '@aws-sdk/client-cognito-identity-provider';
const cognitoClient = new CognitoIdentityProviderClient({ region: 'us-east-1' });
export async function authenticateUser(email: string, password: string) {
const command = new InitiateAuthCommand({
ClientId: process.env.COGNITO_CLIENT_ID!,
AuthFlow: 'USER_PASSWORD_AUTH',
AuthParameters: { USERNAME: email, PASSWORD: password },
});
const res = await cognitoClient.send(command);
return {
accessToken: res.AuthenticationResult?.AccessToken,
idToken: res.AuthenticationResult?.IdToken,
refreshToken: res.AuthenticationResult?.RefreshToken,
};
}3) RTK Query Base API
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
export const api = createApi({
baseQuery: fetchBaseQuery({
baseUrl: process.env.NEXT_PUBLIC_API_BASE_URL,
prepareHeaders: (headers, { getState }) => {
const token = (getState() as any).auth.token;
if (token) headers.set('authorization', `Bearer ${token}");
return headers;
},
}),
endpoints: (builder) => ({
getProjects: builder.query<any[], void>({ query: () => '/projects' }),
// ...
}),
});4) Prisma Schema Highlights
model Event {
id Int @id @default(autoincrement())
orgId Int
title String
startsAt DateTime
endsAt DateTime
location String?
status String
capacity Int?
rsvps RSVP[]
volunteerTasks VolunteerTask[]
}
model VolunteerTask {
id Int @id @default(autoincrement())
title String
status String
priority String?
dueAt DateTime?
assigneeMemberId Int?
event Event
assignee Member?
notes Note[]
attachments Attachment[]
}5) Amplify CI/CD (Next.js)
version: 1
frontend:
phases:
preBuild:
commands:
- cd client
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: client/.next
files:
- '**/*'
cache:
paths:
- client/node_modules/**/*
- client/.next/cache/**/*Security & Compliance
- Authentication via AWS Cognito with MFA options, strict password policy
- RBAC, JWT, API rate limiting; VPC isolation, SGs and IAM for least-privilege
- Encryption at rest (RDS/S3) and in transit (HTTPS); Secrets Manager rotation
- Compliance posture: SOC 2, HIPAA, GDPR ready practices
Performance & Scalability
Frontend
- FCP < 1.5s, LCP < 2.5s, CLS < 0.1, FID < 100ms
- Code-splitting, image optimization, lazy loading, PWA
Backend
- p95 API < 200ms, PgBouncer pooling, read replicas
- EC2 ASG + ALB, CloudFront edge caching
Project Highlights
- Full-stack application with frontend, backend, and database integration
- AWS cloud infrastructure with Cognito auth, S3 storage, and RDS PostgreSQL
- Real-time features, advanced filtering, and multi-view event management
- Production-ready architecture designed for scalability and security
Future Enhancements
- Predictive analytics, smart task assignment, anomaly detection
- Mobile apps (iOS/Android) with offline & push
- Calendar/Payments/Social integrations; GraphQL API; serverless