Skip to content
GarudaHacksPublic

Repository files navigation

Garuda Hacks Admin Portal 🚀

The official admin portal for Garuda Hacks 6.0-7.0. The app serves as the main interface for admin and other related capabilities.

High-level Architecture

This app uses Firebase admin SDK to interact with database directly. This app has some important functionalities such as:

  • Managing application: From checking, reviewing, accepting, rejecting, canceling applications of user. The status update by admins is also complete with email send. Consider adjusting email send to be reusable or similar with what web-be application has.
  • Managing the configuration: such as open-close date for portal, or mentorship platform.
  • Team formation: see how team has already forming.
  • Speed dating: see which users join which mobile team.
  • Table assignments: manually assign hackers into their designated table, configurable for amount of table with different capacity (e.g. 4, 8, etc).
  • Check-in: useful for both admin and assigned volunteer at check-in booth, complete with authorship for logging.
  • Mentoship: manage or add mentors, promoting or creating account for them.
  • Mailing: send dispentation letter for users who requested.

The app is authorized for @garudahacks.com email only. Except for Check-in feature which volunteer with regular email is authorized with custom claim usher in Firebase Auth, but only will able to access /check-in page.

Regarding Team Forming

It is a known issue that current arhitecture of the app is not scaleable, especially for team forming that is in registration a typed value rather than by invite link. This cause discrepancy between mobile team app and the actual team forming. Consider improving this so the team get up to date whenever needed, including for linking with submitted project from Devpost, or the table assignment without confusing you as developer or admins who manage it.

🛠️ Tech Stack

  • Frontend

    • Next.js 15
    • React 19
    • TypeScript
    • TailwindCSS
    • Vercel Analytics
  • Backend

    • Firebase Cloud Functions
    • Firebase Authentication
    • Firebase Firestore
  • Deployment

    • Vercel
    • Vercel Analytics

🚀 Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Firebase account

Installation

  1. Clone the repository
git clone https://github.com/your-username/gh-admin.git
cd gh-admin
  1. Install dependencies
npm install
  1. Set up environment variables
cp .env.example .env

Fill in your Firebase configuration in .env

  1. Start development server
npm run dev

Building for Production

npm run build

📁 Project Structure

gh-admin/
├── app/                # Next.js app directory
├── components/         # Reusable UI components
├── contexts/           # React context providers
├── lib/                # Utility functions and Firebase config
├── public/             # Static assets
├── static/             # Additional static files
├── .github/            # GitHub workflows and templates
├── firebase.json       # Firebase configuration
├── next.config.ts      # Next.js configuration
└── tailwind.config.ts  # Tailwind CSS configuration

🔧 Configuration

Environment Variables

Required environment variables:

  • NEXT_PUBLIC_FIREBASE_API_KEY
  • NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
  • NEXT_PUBLIC_FIREBASE_PROJECT_ID
  • NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
  • NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
  • NEXT_PUBLIC_FIREBASE_APP_ID
  • NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID

🤝 Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feat/amazing-feature)

  3. Make your changes following our commit conventions:

    # Format
    <type>(<scope>): <description>
    
    # Examples
    feat(auth): add Google OAuth login
    fix(api): resolve proxy configuration
    docs(readme): update installation steps
    style(ui): improve button hover states
    refactor(forms): simplify validation logic
    test(api): add auth endpoint tests
    chore(deps): update dependencies

    Types: feat, fix, docs, style, refactor, test, chore Scope: optional, indicates the module affected

  4. Push to the branch (git push origin feat/amazing-feature)

  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments


Made with ❤️ by the Garuda Hacks Team

Releases

Packages

Used by

Contributors

Languages