CaiCai is a real-time photo sharing and management application that allows users to create sessions, upload photos, and assign them to participants in a fun and interactive way.
-
Session Management
- Create unique 6-character session codes
- Join sessions as participants
- Real-time participant updates
- Session expiry and cleanup
-
Photo Management
- Upload multiple photos
- Automatic or manual photo assignment
- Real-time photo updates
- Remove photos
-
Real-time Communication
- WebSocket-based real-time updates
- Instant participant joins/leaves
- Live photo assignments
- Session state synchronization
- React with TypeScript
- Socket.IO Client for real-time communication
- Tailwind CSS for styling
- React Router for navigation
- Context API for state management
- Node.js with Express
- Socket.IO for WebSocket communication
- Supabase for database
- TypeScript for type safety
.
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React context providers
│ │ ├── pages/ # Page components
│ │ ├── types/ # TypeScript type definitions
│ │ └── utils/ # Utility functions
│ └── package.json
│
└── backend/ # Node.js backend server
├── src/
│ ├── lib/ # Database and utility functions
│ └── index.ts # Main server file
└── package.json
- Node.js (v14 or higher)
- npm or yarn
- Supabase account
VITE_API_URL=http://localhost:3000
PORT=3000
CORS_ORIGIN=http://localhost:8080
SUPABASE_URL=your_supabase_url
SUPABASE_SERVICE_KEY=your_supabase_service_key
SESSION_EXPIRY_TIME=86400000
MAX_PARTICIPANTS=50
SESSION_CODE_LENGTH=6
- Clone the repository
git clone <repository-url>
cd cai-cai- Install dependencies
# Install frontend dependencies
cd frontend
npm install
# Install backend dependencies
cd ../backend
npm install- Start the development servers
# Start backend server
cd backend
npm run dev
# Start frontend server
cd frontend
npm run dev- Build the frontend
cd frontend
npm run build- Deploy the built files to your hosting service
- Build the backend
cd backend
npm run build- Start the production server
npm start- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.