Theme Camp Hub is a web application designed to streamline the organization, communication, and logistics for Burning Man theme camps. The goal is to provide a central, user-friendly platform for camp members to manage essential information, reducing the reliance on scattered spreadsheets, documents, and chat threads.
This initial version (v1.0) represents the Minimum Viable Product (MVP) focused solely on the frontend user interface and experience. It utilizes mock data and local browser state management to demonstrate core features without backend integration.
- Camp Context: The UI operates within the context of a single, hardcoded mock camp.
- User Profile:
- View and edit personal details (Legal Name, Playa Name, Contact).
- View and edit travel itinerary information (Arrival/Departure, Mode of Transport, Origin, Pass/Ride Status).
- View and edit accommodation details (Type, Size, Power Needs).
- Form validation using Zod.
- Camp Roster:
- View a table of mock camp members.
- Display key info: Playa Name, Real Name, Role, Arrival/Departure, Accommodation Type.
- Placeholder actions for inviting, editing roles, and removing members.
- Announcements:
- View a list of mock camp announcements.
- View individual announcement details.
- Create new announcements (saved to local mock state).
- Lists (Shopping, Tasks, etc.):
- View an overview of different mock lists.
- Create new lists (saved to local mock state).
- View items within a specific list.
- Add new items to a list (saved to local mock state).
- Mark list items as complete.
- Dashboard:
- Displays widgets for Recent Announcements and Assigned Tasks (using mock data).
- Settings:
- Mock UI for configuring AI features (Provider selection, API Key input with security warning).
- AI Feature Placeholders:
- "Draft with AI" / "Suggest Items" buttons integrated into relevant forms (Announcements, Lists) with placeholder actions.
- Framework: Next.js (v14+ with App Router)
- Language: TypeScript
- UI Library: Shadcn/ui (built on Radix UI & Tailwind CSS)
- Styling: Tailwind CSS
- Forms: React Hook Form + Zod (for validation)
- State Management (MVP): React Context, Zustand (for mock data stores), Component State (
useState) - Icons: Lucide React
- Linting/Formatting: ESLint, Prettier
- Package Manager: pnpm
- Deployment: Vercel
- Clone the repository:
git clone <repository-url> cd pcb-app
- Install dependencies:
This project uses
pnpmas the package manager.pnpm install
- Environment Variables:
For the frontend-only MVP (v1.0), no specific environment variables are strictly required to run the application locally with mock data. However, Next.js applications often utilize environment variables.
- If you need to add environment variables later (e.g., for API keys during backend integration), create a
.env.localfile in thepcb-approot directory:# Example .env.local NEXT_PUBLIC_SOME_VAR=your_value SOME_SERVER_VAR=another_value - Ensure
.env.localis listed in your.gitignorefile (it should be by default with standard Next.js setups).
- If you need to add environment variables later (e.g., for API keys during backend integration), create a
- Run the development server:
pnpm run dev
- Open the application: Navigate to http://localhost:3000 in your browser.
- Directory Structure Overview:
src/app/: Contains application routes (using App Router conventions).src/components/: Reusable UI components.ui/: Shadcn/ui components.features/: Components specific to application features (Profile, Roster, etc.).layout/: Core layout components (Header, Sidebar, etc.).
src/lib/: Utilities, validation schemas, constants, mock data, types.src/styles/: Global styles.specs/: (Located in project root) Design, architecture, and sprint planning documents.
- Coding Conventions & Linting:
- The project uses ESLint and Prettier for code linting and formatting.
- These tools are typically run automatically on commit via Husky and lint-staged configuration.
- You can manually run checks with:
pnpm run lint pnpm run format # (Or configure your editor for format-on-save)
This application is configured for easy deployment via Vercel.
- Connect Repository: Link your Git repository (GitHub, GitLab, Bitbucket) to a new Vercel project.
- Build Configuration: Vercel typically auto-detects Next.js projects. Ensure the following settings are correct:
- Framework Preset: Next.js
- Root Directory:
pcb-app(Assuming Vercel project points to the repo root containingpcb-app) - Build Command:
pnpm build(orpnpm next buildif Vercel usesnext buildby default) - Install Command:
pnpm install
- Environment Variables: Add any required environment variables (like those defined in
.env.local, especially non-NEXT_PUBLIC_ones needed for the build/server) to the Vercel project settings. - Deployment: Pushing to the connected Git branch (e.g.,
main) will automatically trigger a deployment on Vercel.
This README will be updated with more details as the project progresses.