The ultimate dashboard for orchestrating your Hackathons Canada event. Inspired by the mythical craftsman, Daedalus empowers you to navigate every facet of your hackathon journey, from application to awards.
Daedalus is packed with features to streamline hackathon management for both organizers and hackers:
- 👨💻 Hacker Applications: A fully-featured application system with custom forms, resume uploads, and detailed submission tracking.
- 📊 Organizer Dashboard: A central hub for organizers to view analytics, manage applications, and oversee event logistics.
- 🗓️ Dynamic Schedule: Create and manage a real-time event schedule to keep participants informed.
- 🎟️ RSVP & Check-in: Effortlessly manage event RSVPs and streamline on-site check-in with a built-in QR code scanner.
- 👤 User Profiles: Personalized profiles for hackers and organizers.
- 🤫 Auth Ready: Secure authentication powered by NextAuth.js.
- ...and much more!
- Framework: Next.js (App Router)
- Language: TypeScript
- Authentication: NextAuth.js
- Database & ORM: PostgreSQL with Drizzle ORM
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Form Handling: React Hook Form & Zod for validation
- Deployment: Vercel
- Package Manager: Bun
Follow these instructions to get a local copy of Daedalus up and running.
- Node.js (v18 or higher recommended)
- Bun (fast JavaScript runtime & package manager):
curl -fsSL https://bun.sh/install | bash- On Windows:
powershell -c "irm bun.sh/install.ps1 | iex"
- On Windows:
- Database Access: Contact Sohel (VP Backend) for database connection details
-
Clone the Repository:
git clone https://github.com/Hack-Canada/Daedalus-Hacker-Portal.git cd Daedalus-Hacker-Portal -
Install Dependencies:
bun install
-
Set Up Environment Variables:
Create a
.env.localfile in the root of the project:# Create environment file touch .env.local # On Windows: type nul > .env.local
Add the following variables to your
.env.localfile:# Database (PostgreSQL) - Contact Sohel (VP Backend) for this URL DATABASE_URL="postgresql://username:password@host:port/database" # Auth.js - Generate a secret key AUTH_SECRET="your-auth-secret-here" # Generate with: openssl rand -base64 32 AUTH_URL="http://localhost:3000" # Application URL NEXT_PUBLIC_APP_URL="http://localhost:3000" # Optional: Google OAuth (for social login) GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" # Optional: AWS Services (for file uploads and emails) AWS_REGION="us-east-1" AWS_ACCESS_KEY_ID="your-aws-access-key" AWS_SECRET_ACCESS_KEY="your-aws-secret-key" AWS_S3_BUCKET_NAME="your-s3-bucket" NEXT_PUBLIC_AWS_S3_BUCKET_NAME="your-s3-bucket" AWS_SES_VERIFIED_EMAIL="your-verified-email@domain.com" AWS_SES_NO_REPLY_EMAIL="no-reply@your-domain.com"
-
Set Up Database Schema:
Push the database schema to your PostgreSQL instance:
bun run db:push
-
Launch the Development Server:
bun dev
Open http://localhost:3000 in your browser to see the application.
| Command | Bun Command | Description |
|---|---|---|
| Development | bun dev |
Start development server |
| Build | bun run build |
Build for production |
| Start | bun start |
Start production server |
| Lint | bun run lint |
Run ESLint |
| Format | bun run format |
Format code with Prettier |
| DB Push | bun run db:push |
Push schema to database |
| DB Studio | bun run db:studio |
Open Drizzle Studio |
Database Connection Issues:
- Ensure your
DATABASE_URLis correct (contact Sohel if needed) - Check that your database is running and accessible
- Verify your
.env.localfile is in the project root
Environment Variables Not Loading:
- Make sure you're using
.env.local(not.env) - Restart your development server after changing environment variables
- Check that there are no syntax errors in your
.env.localfile
Contributions are welcome! If you have a feature request, bug report, or want to contribute to the code, please feel free to open an issue or submit a pull request.
I recommend creating a CONTRIBUTING.md file to outline the process for contributors.
This project is licensed under the GPLv3 License.
Let's build unforgettable hackathon experiences together! 🚀