Welcome to the official repository for the Camp Starfish Photo & Scheduling App, developed by Hack4Impact-UMD! 🎉
This project is a web application designed to streamline photo management and scheduling operations for Camp Starfish. It provides an intuitive interface for managing camp activities, photos, and administrative tasks.
This repository contains everything you need code, documentation, and setup guides to effectively contribute to the Camp Starfish app. Follow the setup guide below to get started quickly. Feel free to reach out to the team if you have any questions!
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Mantine UI
- Data Fetching: Tanstack Query
- Tables: Tanstack Table
- Forms: Tanstack Form
- Schema Validation: Zod
- Runtime: Node.js
- Cloud Provider: Firebase
- Firestore Database
- Authentication
- Cloud Functions
- Cloud Storage
- Hosting
- Google Drive Integration: Google Apps Script
- Language: TypeScript
- Schema Validation: Zod
Get started quickly by setting up your local environment:
-
GitHub SSH Configuration:
- Follow this GitHub Guide.
-
Clone the Repository:
git clone git@github.com:Hack4Impact-UMD/camp-starfish.git cd camp-starfish
Install dependencies and run the development server:
npm install
npm run devOpen http://localhost:3000 to see your running application.
To simulate Firebase locally:
- Install Firebase CLI
npm install -g firebase-tools
firebase login- Install dependencies
cd functions
npm install- Run Emulators with Test Data
firebase emulators:start ./testData- Start the Local Development Server Open a new terminal and run the following:
npm run dev- Compile Cloud Functions To compile Cloud Functions locally, open a new terminal and run the following:
cd functions
npm run buildHere's how the project directories are structured:
camp-starfish/
├── ./github/workflows # Automated GitHub Workflows
├── .vscode/ # Developer settings for VSCode
├── apps-script
│ ├── src/ # Apps Script source code
│ │ ├── features/ # Feature-specific Apps Script code
│ │ ├── utils/ # Helper functions for Apps Script
│ │ ├── appsscript.json # Apps Script configuration file
│ │ └── globals.d.ts # Apps Script function definitions for TypeScript intellisense
│ ├── .clasp.json # Configuration for the CLASP command line tool
│ ├── package.json # Apps Script dependencies
│ └── tsconfig.json # Apps Script TypeScript configuration
├── docs/ # Documentation
├── functions/ # Firebase Cloud Functions
│ ├── src/ # Cloud Functions source code
│ ├── package.json # Functions dependencies
│ └── tsconfig.json # TypeScript config for functions
│── node_modules/
│── public/
│ └── fonts/ # Font files
│── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── layout.tsx # Root layout
│ │ ├── page.tsx # Home page
│ │ └── [routes]/ # All application routes
│ ├── assets/ # Images and static files
│ ├── auth/ # Authentication modules
│ ├── components/ # Reusable application-specific components
│ ├── config/ # App configurations
│ ├── data/ # Data operations
| ├── features/ # Individual app features
│ ├── hooks/ # Custom React hooks
│ ├── styles/ # Global styles and theming
│ ├── types/ # Type definitions
│ └── utils/ # Utility functions and helpers
├── test/ # Test files and test data
│ └── emulatorData/ # Firebase emulator test data
│── .env
│── .firebaserc
│── .gitignore
│── eslint.config.mjs
│── firebase.json
│── firestore.indexes.json
│── firestore.rules # Firestore Security Rules
│── next.config.ts
│── package-lock.json # Details for dependencies across all project modules
│── package.json # Next.js app dependencies
│── postcss.config.mjs
│── storage.rules # Cloud Storage Security Rules
│── tailwind.config.ts
│── tsconfig.json # Next.js App TypeScript configuration
└── README.md # This file
Before submitting a PR, please ensure it meets the following criteria:
- Code follows project style guidelines
- All tests pass locally
- Branch is up to date with
main - Commit messages are clear and descriptive
- No console.logs or debugging code left behind
- Proper comments where necessary
- TypeScript types are properly defined
- Tested in Firebase Emulator environment
- Create a pull request
- Link your PR to the corresponding GitHub Issue
- Request and assign tech leads as reviewers
- Review and address comments by making requested changes
- Once approved, tech leads will merge your PR
- Delete your feature branch after merge
| Name | Role | Contact |
|---|---|---|
| Nitin Kanchinadam | Tech Lead | nitin.kanchinadam@gmail.com |
| Esha Vigneswaran | Tech Lead | eshav@terpmail.umd.edu |
🎉 Happy coding! Together, we’ll make Camp Starfish amazing! ⭐️
