Skip to content

Latest commit

 

History

57 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foundlify

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

Foundlify home page

What it does

  • 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

Tech stack

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

Architecture

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.

Project structure

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

Running locally

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 runserver

Then 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.

Environment variables

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).

License

MIT © Elizaveta Trapeznikova

About

Platform for generating and analysing startup ideas, with one-click publishing of a project site

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages