A comprehensive club management platform built for Hack Club communities worldwide. Empower your coding community with smart member management, event organization, and project tracking.
- Smart Member Management - Track members, progress, and engagement analytics
- Event Organization - Plan hackathons, workshops, and meetings with automated reminders
- Project Tracking - Monitor coding challenges and member projects with achievement systems
- Pizza Grant Integration - Streamlined submission process for Hack Club pizza grants
- Achievement Showcase - Create stunning portfolios of member projects and club achievements
- Advanced Analytics - Track club growth, engagement, and project completion rates
- Traditional email/password signup and login
- Slack OAuth integration for seamless authentication
- Admin panel for user and club management
- Hackatime - Track coding time and project statistics
- Airtable - Automated pizza grant submissions
- Slack - OAuth authentication and user profile integration
- Backend: Flask (Python)
- Database: PostgreSQL with SQLAlchemy ORM
- Frontend: HTML5, CSS3, JavaScript (Vanilla)
- Authentication: Flask-Login with Slack OAuth
- Rate Limiting: Flask-Limiter
- File Uploads: Hack Club CDN integration
- Deployment: Docker-ready with Replit support
- Python 3.11+
- PostgreSQL database
- Required environment variables (see Configuration section)
-
Clone the repository or fork on Replit
-
Install dependencies:
pip install flask flask-login flask-sqlalchemy requests psycopg2-binary werkzeug flask-limiter
-
Set up environment variables (see Configuration section)
-
Run the application:
python3 main.py
The application will be available at http://0.0.0.0:5000
# Database
DATABASE_URL=postgresql://username:password@host:port/database
# Flask
SECRET_KEY=your-secret-key-here
# Slack OAuth (optional)
SLACK_CLIENT_ID=your-slack-client-id
SLACK_CLIENT_SECRET=your-slack-client-secret
SLACK_SIGNING_SECRET=your-slack-signing-secret
# Airtable Integration (for pizza grants)
AIRTABLE_TOKEN=your-airtable-api-token
AIRTABLE_BASE_ID=your-airtable-base-id
AIRTABLE_TABLE_NAME=your-table-name
The application will automatically create the necessary database tables on first run. A super admin account is created with:
- Email:
[email protected]
- Password:
hackclub2024
Important: Change the default admin password immediately after first login.
- Sign up and select "I want to start a club"
- Customize your club details in the dashboard
- Share your join code with members
- Create assignments, schedule meetings, and track projects
- Submit pizza grants for member projects
- Sign up with a join code from your club leader
- Complete assignments and track your progress
- Submit projects for showcase
- Connect your Hackatime account to track coding time
- Access the admin panel at
/admin
- Manage users, clubs, and system-wide settings
- View analytics and platform statistics
- Grant/revoke administrator privileges
POST /login
- User loginPOST /signup
- User registrationGET /auth/slack
- Slack OAuth initiationGET /auth/slack/callback
- Slack OAuth callback
GET /api/clubs/<id>/posts
- Get club postsPOST /api/clubs/<id>/posts
- Create club postGET /api/clubs/<id>/assignments
- Get assignmentsPOST /api/clubs/<id>/assignments
- Create assignmentGET /api/clubs/<id>/meetings
- Get meetingsPOST /api/clubs/<id>/meetings
- Schedule meeting
POST /api/clubs/<id>/pizza-grants
- Submit pizza grantPOST /api/upload-screenshot
- Upload project screenshot
GET /api/admin/users
- Get all usersGET /api/admin/clubs
- Get all clubsGET /api/admin/stats
- Get platform statistics
├── main.py # Main Flask application
├── templates/ # HTML templates
│ ├── base.html # Base template
│ ├── index.html # Landing page
│ ├── dashboard.html # User dashboard
│ ├── club_dashboard.html # Club management
│ ├── admin_dashboard.html # Admin panel
│ └── ...
├── static/ # Static assets
│ ├── css/ # Stylesheets
│ ├── js/ # JavaScript files
│ └── assets/ # Images and media
└── README.md # This file
- Password hashing with Werkzeug
- Rate limiting on all endpoints
- CSRF protection
- SQL injection prevention with SQLAlchemy ORM
- Admin-only endpoints protection
- File upload validation
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is optimized for Replit deployment:
- Fork the repl
- Set up environment variables in Replit Secrets
- Click Run to start the application
- Use Replit's deployment feature to publish
docker build -t hack-club-dashboard .
docker run -p 5000:5000 --env-file .env hack-club-dashboard
For support and questions:
- Create an issue in the repository
- Contact the Hack Club community
- Check the Hack Club Slack
Built with ❤️ for the Hack Club community.
Join the global movement of teenage hackers at hackclub.com