The official ecosystem and digital identity hub for Google Developer Groups on Campus – Holy Angel University (GDG HAU). This platform contains multiple applications and shared packages designed to handle member identities, event management, ticketing, points, badges, and internal community operations.
For complete developer documentation, see the Documentation Portal or run pnpm docs:serve.
Follow these steps to get your development environment running locally.
Ensure you have the following installed before proceeding:
- Node.js (v20 or newer)
- Corepack, included with Node.js, to use the repository's pinned pnpm version
- Supabase CLI (For local database development)
-
Clone the repository
git clone https://github.com/gdsc-hau/Axis.git cd Axis -
Install dependencies
corepack enable pnpm install -
Set up environment variables Create
.env.localinside bothapps/gdg-hubandapps/gdg-id. Useapps/gdg-hub/.env.exampleas the reference for the shared Supabase variables.gdg-idalso requires a privateQR_SIGNING_SECRETcontaining at least 32 characters; its Upstash variables are optional for local development. Never commit either.env.localfile. -
Start local Supabase (Database & Auth) Make sure Docker is running on your machine, then run:
supabase start
-
Start the development server Using Turborepo, you can start all apps simultaneously:
pnpm dev
- Frontend: Next.js 15 (App Router), Tailwind CSS, and the shared
@hau/axis-uidesign system - Backend & Database: Supabase (PostgreSQL, Auth, Storage)
- Type Safety: Zod & TypeScript (End-to-End Type Safety)
- Monorepo Management: Turborepo & pnpm Workspaces
- Documentation: MkDocs with the Read the Docs theme
This project uses a monorepo setup powered by Turborepo and pnpm workspaces:
gdg-axis/
├── apps/
│ ├── gdg-hub/ # Internal event, membership, and points management system
│ └── gdg-id/ # Public-facing digital ID, profile, and portfolio viewer
├── packages/
│ ├── auth/ # Shared authentication logic & Supabase wrappers
│ ├── badges/ # Badge awarding and verification logic
│ ├── certificates/ # PDF certificate generation for events
│ ├── config/ # ESLint, Prettier, and global configs
│ ├── contracts/ # Shared DB schemas and Zod contracts
│ ├── db/ # Database clients, models, and queries
│ ├── events/ # Event registration and attendance logic
│ ├── marketplace/ # Point redemption and swag marketplace logic
│ ├── points/ # Points ledger and calculation logic
│ ├── pwa/ # Progressive Web App configuration logic
│ ├── types/ # Global TypeScript type definitions
│ ├── typescript-config/ # Shared `tsconfig.json` configurations
│ └── axis-ui/ # Shared Axis design system and React components
├── supabase/
│ └── migrations/ # Supabase SQL migration files
└── docs/ # MkDocs documentation source files
We welcome contributions! Start with the root contribution workflow, then use the detailed coding standards as needed.
UI/UX contributors and developers working on shared components should also read the UI/UX contribution guide and the @hau/axis-ui package guide. Applications import supported components from @hau/axis-ui; they do not copy shared component code or deep-import package source files.
Built with ❤️ by the GDG HAU Core Team.