A Django web app that generates startup ideas with AI, scores their viability, and can publish a landing page for any idea in one click.
Live site:foundlify.com
- Generates startup ideas with OpenAI, optionally filtered by industry, trend, and business type
- Produces a full analysis per idea: viability scores (problem, market, revenue, competition, risk), key features, monetization strategies, tech stack, and MVP steps
- Builds and publishes a landing page for an idea from a set of templates and color themes
- Lets users explore, search, and like ideas shared by the community
- Publishes SEO-friendly articles with categories and search
- Supports sign-in with email, Google, or Apple; anonymous visitors get a persistent guest account so their ideas survive between visits
Python 3.11 · Django 5.2 · PostgreSQL (SQLite locally) · Django Templates + vanilla CSS/JS · OpenAI API · django-allauth · WhiteNoise · deployed on Render behind foundlify.com
Foundlify is a server-rendered Django monolith. Every request first passes through GuestUserMiddleware, which links anonymous visitors to a persistent guest user via a cookie — this is what lets guests generate and like ideas without registering, and later carry that data into a real account.
Idea generation lives in apps/idea_generator. The view posts the selected filters to IdeaGenerationService, which builds a prompt, calls the OpenAI API requesting structured JSON, validates the response, and saves a StartupIdea with all scores and analysis fields. If the API call fails, the service falls back to locally generated placeholder data (controlled by OPENAI_USE_MOCK_ON_ERROR), so the site keeps working without a key.
Landing pages are handled by apps.startup_websites: each generated site is a combination of an idea, one of three page templates, and a color theme, rendered as a regular Django view with its own public URL.
Favorites use a GenericForeignKey, so the same mechanism likes both ideas and articles. Content management goes through apps.backoffice — a custom admin dashboard with JSON endpoints — alongside the standard Django admin. The database is configured from a single DATABASE_URL (Postgres in production, SQLite fallback for local development), and static files are served by WhiteNoise.
foundlify/
├── apps/
│ ├── core/ # Home, about, SEO pages (robots, sitemap)
│ ├── idea_generator/ # AI idea generation: models, OpenAI service, prompts
│ ├── startup_websites/ # Landing-page generator (templates, themes, catalog)
│ ├── articles/ # Blog with categories and SEO fields
│ ├── favorites/ # Likes for ideas and articles (generic relations)
│ ├── users/ # Auth, guest-user middleware, allauth adapters
│ └── backoffice/ # Custom admin dashboard and its JSON APIs
├── foundlify/ # Project settings, root URLconf, WSGI/ASGI
├── templates/ # Django templates (base layout + per-app pages)
├── static/ # CSS and JavaScript
├── docs/ # Screenshots
├── manage.py
└── requirements.txt
git clone <repo-url>&&cd foundlify
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # fill in at least SECRET_KEY
python manage.py migrate
python manage.py createsuperuser # optional, for /admin/
python manage.py runserverThen open http://127.0.0.1:8000. With DATABASE_URL left empty the app uses a local SQLite database; with OPENAI_API_KEY left empty idea generation returns built-in placeholder ideas instead of calling the API.
| Variable | Purpose | Without it |
|---|---|---|
SECRET_KEY | Django cryptographic signing key | App fails to start |
DEBUG | Debug mode toggle | Defaults to True; must be False in production |
DATABASE_URL | Postgres connection string | Falls back to local SQLite db.sqlite3 |
DATABASE_SSL_REQUIRE | Require SSL for Postgres connections | Defaults to True |
OPENAI_API_KEY | Enables real AI idea generation | Generation falls back to placeholder ideas |
OPENAI_MODEL | OpenAI model name | Defaults to gpt-4o-mini |
OPENAI_USE_MOCK_ON_ERROR | Serve placeholder ideas when the API fails | Defaults to True; if False, API errors surface to the user |
SITE_ID | django.contrib.sites record used by allauth | Defaults to 2 |
Google/Apple sign-in additionally requires OAuth credentials configured in the Django admin (Social applications).
MIT © Elizaveta Trapeznikova
