The Ultimate Bridge Between Brands and Billboards. No safety harness required.
Billboard Organiser (BBO.) is a high-performance, role-based platform designed to revolutionise the billboard advertising industry. Built with a striking Neo-Brutalist aesthetic, it's the only app that looks as bold as a 40-foot sign on the highway. We help advertisers, asset owners, and administrators manage high-visibility spaces without the high-visibility headaches.
- π¨ Neo-Brutalist UI: We hate rounded corners. Every button has a shadow so thick you could trip over it.
- π Role-Based Access (RBAC): Customised dashboards so Advertisers don't accidentally try to sell their own billboards.
- πΈ Startup-Grade Pricing Engine: Dynamic multipliers! Mumbai premiums! Seasonal surges! It's like Uber, but for static 2D objects.
- π Scalable Architecture: A backend so organized it probably color-codes its socks.
- π Real-time Analytics: See how many people are looking at your ad instead of the road (Disclaimer: BBO. is not responsible for traffic accidents).
Browse. Book. Bloom.
- Find prime locations before your competitors do.
- Manage multi-city campaigns while sipping your third espresso.
- Upload high-res creatives that look stunning on 50-foot canvases.
List. Lease. Lead.
- Turn that giant metal frame on your roof into a money printer.
- Manage bookings and track earnings with zero spreadsheets.
- Automated pricing so you don't leave money on the table (or the highway).
Govern. Guide. Grow.
- See everything. Control everything. Feel powerful.
- Monitor global analytics and platform health.
- Keep the riff-raff out and the payments flowing.
We leverage modern technologies to ensure speed, security, and the ability to handle millions of impressions.
- Backend: Django & DRF (The brains/muscle)
- Frontend: React 18 + Vite β‘ (The pretty face)
- API: Centralized v1 Versioning πΊοΈ (The future-proofing)
- Design: Custom Neo-Brutalist CSS System π¨ (The attitude)
- Database: PostgreSQL (Where the giant sign data sleeps)
We've automated the boring stuff. If you're on Windows, run the PowerShell script. If you're on macOS/Linux, use the bash script.
./setup.ps1chmod +x setup.sh
./setup.shIf you're moving beyond localhost and want to use a hosted database like Supabase, follow these steps:
- Sign up at Supabase.
- Create a new project.
- Navigate to Project Settings > Database.
You'll need the following info from your Supabase dashboard:
- Host:
db.xxxx.supabase.co(or use the Connection Pooling host for high-volume apps). - Port:
6543(usually for Transaction pooling). - Database Name:
postgres(default). - User:
postgres.xxxxxxx(your unique project ID). - Password: The password you set during project creation.
In your backend/.env file, update the following fields:
DB_NAME=postgres
DB_USER=postgres.xxxxxxxxxxxxxxxxxxxx
DB_PASSWORD=your_secure_password
DB_HOST=aws-0-xxxx-xxxx-xxxx.pooler.supabase.com
DB_PORT=6543Alternatively, you can provide a single DB_URL string if you prefer:
DB_URL=postgresql://postgres.xxxx:your_pass@db.xxxx.supabase.co:5432/postgresOnce connected, run:
# Apply schema
python manage.py migrate
# Seed with Indian billboard data (Optional, but recommended)
python manage.py shell -c "import seed_db; seed_db.seed_data()"
# OR simply
python seed_db.pyTo keep the "Organiser" in BBO. organized and secure:
- Never commit
.envfiles: Our.gitignoreis pre-configured to skip these. If you accidentally commit one, rotate your secrets immediately! - Environment Templates: Always update
.env.exampleif you add new variables so other devs know what to configure. - Database Secrets: Use a strong password for your Supabase instance. Avoid using default passwords like
admin123. - JWT Security: The
DJANGO_SECRET_KEYis currently set to a default for local development. For production, generate a long, random string.
If you prefer to do things by hand (we respect that), follow these steps:
Prerequisites: Node.js and Python 3.10+ installed.
git clone https://github.com/RakshitKashyap1/BillBoardOrganiser.git
cd BillBoardOrganiser# Copy environment variables
cp .env.example .env
# Install and run
npm install
npm run devcd backend
# Copy environment variables
cp .env.example .env
# Create virtual environment
python -m venv venv
./venv/Scripts/Activate.ps1 # Or 'source venv/bin/activate' on Mac/Linux
# Install dependencies
pip install -r requirements.txt
# Run migrations and start server
python manage.py migrate
python manage.py runserverNavigating a new codebase can be like finding a specific billboard in a storm. Here's your map:
.
βββ backend/ # Django REST Backend
β βββ api/ # Versioned API logic (v1)
β βββ apps/ # Core Django apps (users, ads, bookings)
β βββ bbo_backend/ # Main Django settings/config
β βββ requirements.txt # Python dependencies
βββ src/ # React Frontend
β βββ components/ # UI components (Neo-Brutalist inspired)
β βββ pages/ # Full page views
β βββ services/ # API clients and business logic
β βββ styles/ # Custom Neo-Brutalist CSS
βββ public/ # Static assets (images, fonts)
βββ setup.ps1 # Windows automation script
βββ setup.sh # Unix automation script
βββ .env.example # Environment variable templates
Our pricing_engine.py isn't a basic calculator. It's an AdTech masterpiece:
- Mumbai Premium: +50% cost (Because naturally, Mumbai).
- Seasonal Surge: +30% in Nov/Dec (Ho ho ho, pay up).
- Bulk Discount: -10% if you're booking for more than 30 days.
BBO. isn't just another corporate dashboard with soft shadows and pastel colors. We embrace the Neo-Brutalism trend:
- Hard Truths, Hard Shadows: Solid black offsets only.
- Thick Outlines: 3px borders because we're not afraid of commitment.
- Vibrant Chaos: Indigo, Pink, and Yellow. Your eyes won't be bored.
Built with passion and too much coffee for the future of Out-Of-Home advertising. π
