The event platform that celebrates art and open-source AI.
- π¨ Multi-Event Support - Manage multiple events with custom questionnaires
- π Discord Authentication - Seamless OAuth integration via Supabase
- π Custom Questionnaires - Per-event application forms with multiple question types
- π€ User Dashboard - Track application status and history
- π― Application Management - Submit and track event applications
- π± Responsive Design - Beautiful UI that works on all devices
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Authentication: Supabase Auth with Discord OAuth
- Database: Supabase PostgreSQL
- Deployment: Railway.com
- Node.js 18+
- A Supabase account
- A Discord application (for OAuth)
- Railway account (for deployment)
- Clone the repository
git clone <your-repo-url>
cd ados- Install dependencies
npm install- Set up Supabase
- Create a new project at supabase.com
- Go to Project Settings > API to get your URL and anon key
- Run the migration files in
supabase/migrations/in the SQL Editor - (Optional) Run
supabase/seed.sqlfor test data
- Set up Discord OAuth
- Go to Discord Developer Portal
- Create a new application
- Add OAuth2 redirect URL:
https://[your-project].supabase.co/auth/v1/callback - Copy Client ID and Secret
- In Supabase Dashboard, go to Authentication > Providers
- Enable Discord provider and add your Client ID and Secret
- Configure environment variables
Create a .env.local file:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_APP_URL=http://localhost:3000- Run the development server
npm run devOpen http://localhost:3000 in your browser.
- Go to your Supabase project dashboard
- Navigate to the SQL Editor
- Copy the contents of
supabase/migrations/001_initial_schema.sql - Paste and run the SQL
- In the Supabase SQL Editor
- Copy the contents of
supabase/seed.sql - Paste and run the SQL
- This will create 3 sample events with questions
/ados
βββ app/ # Next.js app directory
β βββ auth/ # Authentication routes
β βββ events/ # Event pages
β βββ dashboard/ # User dashboard
β βββ success/ # Success page
βββ components/ # React components
β βββ ui/ # UI components
β βββ Hero.tsx # Landing page hero
β βββ Navigation.tsx # Top nav
β βββ EventCard.tsx # Event preview card
β βββ Questionnaire.tsx # Multi-step form
βββ lib/ # Utility functions
β βββ supabase/ # Supabase clients
β βββ database/ # Database queries
β βββ types.ts # TypeScript types
β βββ utils.ts # Helper functions
βββ hooks/ # Custom React hooks
βββ supabase/ # Database migrations & seeds
βββ public/ # Static files
βββ middleware.ts # Next.js middleware
git init
git add .
git commit -m "Initial commit"
git remote add origin <your-repo-url>
git push -u origin main- Go to Railway.app
- Click "New Project"
- Select "Deploy from GitHub repo"
- Select your repository
- Railway will auto-detect Next.js
In the Railway dashboard, add these variables:
NEXT_PUBLIC_SUPABASE_URL=https://[project].supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=[your-anon-key]
NEXT_PUBLIC_APP_URL=https://[your-app].up.railway.app
NODE_ENV=production
-
In Discord Developer Portal, add Railway URL to redirect URLs:
https://[your-project].supabase.co/auth/v1/callback
-
In Supabase Dashboard, add Railway URL to allowed redirect URLs:
- Authentication > URL Configuration
- Add:
https://[your-app].up.railway.app/auth/callback
- Landing Page - Users see the hero section with background video
- Events List - Browse available events
- Event Details - View event information and questions
- Sign In - Authenticate with Discord
- Apply - Answer questionnaire for the event
- Dashboard - Track application status
Currently, events must be created directly in the Supabase database. Use the SQL Editor:
INSERT INTO events (name, slug, description, date, location, max_attendees, is_active)
VALUES ('Event Name', 'event-slug', 'Description', '2025-12-01 10:00:00+00', 'Location', 100, true);Then add questions for the event:
INSERT INTO questions (event_id, question_text, question_type, order_index)
VALUES
('[event-id]', 'Question 1?', 'text', 1),
('[event-id]', 'Question 2?', 'textarea', 2);Applications can be viewed and managed in the Supabase dashboard:
- Go to Table Editor > attendance
- View all applications
- Update status:
pending,approved,rejected,waitlist
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript compiler check- Admin dashboard for event management
- Email notifications
- Waitlist functionality
- Bulk application actions
- QR code check-in system
- Attendee networking features
- Event schedule builder
- Payment integration
- Ticketing system
- Calendar sync
- Social sharing
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
For issues or questions, please create an issue in the GitHub repository.
Created by banodoco