User Profile Card Generator A form-based web app. The user submits their details; the server processes the input (string manipulation + a generated initials-avatar), stores the record in a SQLite database, and renders a dynamic profile card. Saved cards appear in a gallery. Backend: Python 3 + Flask, server-side rendering (Jinja2) Database: SQLite (profiles.db, created automatically) Frontend: HTML form + responsive CSS What the server does with your input Builds two-letter initials from the name (Manju H → MH) Generates a deterministic gradient avatar from the name (same name → same colours) Splits skills on commas/newlines, trims them, and removes duplicates Normalizes links — adds https:// when the scheme is missing Escapes all output (Jinja autoescaping) so submissions can't inject HTML Routes Method Route Description GET / Form + gallery of saved cards POST /profiles Process + store a submission GET /card/ View a single saved card Run locally Requires Python 3.9+. python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt python app.py Open http://localhost:5000. The database file is created on first run. Project structure profile-card-generator/ ├── app.py # Flask backend, processing, SQLite ├── requirements.txt ├── Procfile # gunicorn start command ├── render.yaml # Render config (optional) ├── templates/ │ ├── base.html │ ├── index.html # form + gallery │ ├── _card.html # reusable card partial │ └── card_page.html # single-card view └── static/ └── style.css Deploy (Render) Push this repo to GitHub. render.com → New → Web Service → connect the repo. Build Command: pip install -r requirements.txt Start Command: gunicorn app:app Instance Type: Free Deploy → you get a public URL like https://profile-card-generator.onrender.com. Storage note: Render's free tier has an ephemeral filesystem, so profiles.db resets on restart — fine for a demo. For permanent storage, attach a persistent disk or use a hosted Postgres database. License MIT