|
|
||
|---|---|---|
| app | ||
| backend | ||
| src | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
Hack Club Stickers
Every Hack Clubber gets free, high-quality stickers. Completing programs and attending hackathons can earn more event-specific merch!
Features
- Trade stickers with other Hack Clubbers
- Browse an archive of all printed Hack Club stickers
- Submit new sticker designs
- Vote on your favourite designs
- Hack to earn monthly sticker shipments
- Use as an API for sticker designs
Contributing
- Help archive stickers at forms.hackclub.com/archive
To spin up the codebase
git clone https://github.com/hackclub/stickers cp .env.example .env npm install npm run devIn a separate terminal cd backend cp .env.example .env Edit .env bundle config set --local path 'vendor/bundle' bundle install bundle exec rackup config.ru -p 9292
API Usage
You can use the prod backend to get a list of all hackclub stickers in JSON, prod backend is https://fccg0c4s0kcggwk0k4s8wggc.a.selfhosted.hackclub.com. Please don't hammer it to hard, let us know what you're up to and we can help you coexist within the rate limit. Locally the backend is ran on port 9292 and exposes the following endpoints:
Authentication
GET /auth/login- Redirects to OIDC provider for loginGET /auth/oidc/callback- OAuth callback handlerGET /auth/logout- Clears session and logs outGET /auth/me- Returns current authenticated user (requires auth)
Stickers
GET /stickers- List all stickersGET /stickers/:id- Get sticker details (requires auth)
Designs
GET /designs- List current user's designs (requires auth)GET /designs/all- List all designs (requires auth)POST /designs- Submit a new design (requires auth)POST /designs/:id/vote- Toggle vote on a design (requires auth)
Shop
GET /shop- List all shop itemsGET /shop/:id- Get shop item details
Our airtable has no sensitive data, if you want a read only personal access token scoped to the base we can provide it! In general we're happy to help you over DM, but please have a glance over the code first!
