A modern, extensible r/place clone designed specifically for the University of Florida campus community. Built with AWS serverless architecture and Next.js, this project allows students to collaboratively create pixel art on a shared canvas.
This monorepo contains:
infra/: AWS CDK infrastructure (API Gateway + Lambda functions)web/: Next.js frontend application with modern React patterns
For complete setup instructions, visit the Wiki
- Prerequisites: Node.js 18+, AWS account, AWS CLI
- Install:
npm install - Configure: Set up AWS credentials and create
.envfiles - Deploy:
npm run cdk:bootstrapthennpm run cdk:deploy - Run:
npm run dev
- Getting Started Guide - Complete setup walkthrough
- AWS Configuration - Detailed AWS setup
- Project Overview - Architecture and design
- Extensibility Guide - Adding new features
- Frontend: Next.js 14, React 18, TypeScript
- Backend: AWS Lambda, API Gateway, CDK
- Infrastructure: AWS CDK, CloudFormation
- Development: npm workspaces, ESLint, esbuild
UF_r-place/
├── infra/ # AWS Infrastructure
│ ├── bin/app.ts # CDK app entry point
│ ├── lib/ # CDK constructs and stacks
│ └── lambda/ # Lambda function handlers
└── web/ # Next.js Frontend
├── app/ # App Router pages and components
└── .env.local # Environment configuration
The project uses modern development practices:
- AWS CDK for infrastructure as code
- Next.js App Router for modern React patterns
- TypeScript throughout the stack
- Serverless architecture for scalability and cost efficiency
- npm workspaces for monorepo management
This project is designed for the UF Open Source Club community, emphasizing:
- Learning AWS serverless architecture
- Modern React and Next.js patterns
- Infrastructure as Code with CDK
- Collaborative development workflows
We welcome contributions from the UF community! The architecture is designed to be:
- Simple - Easy to understand and modify
- Extensible - Straightforward to add new features
- Cost-effective - Runs within AWS Free Tier
- Educational - Great for learning modern web development
- Check the Wiki documentation for detailed guides
- Review existing code in
infra/andweb/directories - Ask questions in the UF Open Source Club community
- Add more constructs (DynamoDB, WebSocket API, S3, ALB) under
infra/lib/constructs - Wire new endpoints to Lambda functions under
infra/lambdaand expose them via API Gateway - Consume new endpoints in the Next.js app (
web/app/...) viafetch(${process.env.NEXT_PUBLIC_API_URL}your-route)
- The API is deployed with CORS enabled for
GETto simplify local development. Tighten this as needed in production. infrausesaws-lambda-nodejsto bundle TypeScript Lambdas with esbuild automatically.- Next.js is configured with the App Router. Config is in
web/next.config.mjs.