-- Users table
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Projects table
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(200) NOT NULL,
description TEXT,
color VARCHAR(7) DEFAULT '#6366f1',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tasks table
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
description TEXT,
status VARCHAR(20) DEFAULT 'pending',
priority VARCHAR(10) DEFAULT 'medium',
due_date DATE,
completed_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);GET /api/projects - Get all projectsPOST /api/projects - Create projectGET /api/tasks - Get tasks with filtersPOST /api/tasks - Create taskPUT /api/tasks/:id/status - Update task statusDELETE /api/tasks/:id - Delete task┌─────────────────────────────────────────────┐
│ My Tasks [+ New] │
├─────────────────────────────────────────────┤
│ [All] [Pending] [Completed] [Overdue] │
├─────────────────────────────────────────────┤
│ ☐ Complete project documentation │
│ 📊 Work Project • High • Due: Tomorrow │
├─────────────────────────────────────────────┤
│ ☑ Review code changes │
│ 💻 Development • Medium • Completed │
├─────────────────────────────────────────────┤
│ ☐ Prepare for meeting │
│ 📅 Personal • Low • Due: Today │
└─────────────────────────────────────────────┘-- Users table
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
preferred_locations TEXT[],
temperature_unit VARCHAR(1) DEFAULT 'C',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Weather data cache
CREATE TABLE weather_cache (
id SERIAL PRIMARY KEY,
location VARCHAR(255) NOT NULL,
temperature DECIMAL(5,2),
humidity INTEGER,
description VARCHAR(255),
icon VARCHAR(50),
cached_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);GET /api/weather/current/:location - Current weatherGET /api/weather/forecast/:location - 5-day forecastPOST /api/users/locations - Save favorite locationGET /api/weather/alerts/:location - Weather alerts┌─────────────────────────────────────────────┐
│ Weather Dashboard [🔍 Search Location] │
├─────────────────────────────────────────────┤
│ ☀️ Chennai, Tamil Nadu │
│ 32°C • Sunny │
│ Feels like 35°C • Humidity: 65% │
├─────────────────────────────────────────────┤
│ Today: 28°-34° Tomorrow: 26°-32° │
├─────────────────────────────────────────────┤
│ 📍 Favorite Locations │
│ • Mumbai (29°C) • Delhi (31°C) │
│ • Bangalore (24°C) • Pune (28°C) │
├─────────────────────────────────────────────┤
│ 5-Day Forecast │
│ Mon 🌤️ 30° Tue ☀️ 32° Wed 🌧️ 28° │
└─────────────────────────────────────────────┘-- URLs table
CREATE TABLE urls (
id SERIAL PRIMARY KEY,
original_url TEXT NOT NULL,
short_code VARCHAR(10) UNIQUE NOT NULL,
user_id INTEGER REFERENCES users(id),
title VARCHAR(255),
clicks INTEGER DEFAULT 0,
expires_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Click analytics
CREATE TABLE clicks (
id SERIAL PRIMARY KEY,
url_id INTEGER REFERENCES urls(id) ON DELETE CASCADE,
ip_address INET,
user_agent TEXT,
referrer TEXT,
country VARCHAR(2),
clicked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);POST /api/shorten - Create short URLGET /api/urls - Get user's URLsGET /api/urls/:id/analytics - Get click analyticsGET /:shortCode - Redirect to original URL┌─────────────────────────────────────────────┐
│ URL Shortener │
├─────────────────────────────────────────────┤
│ Enter URL to shorten: │
│ [https://example.com/very-long-url... ] │
│ Custom alias (optional): [my-link ] │
│ │
│ [Shorten URL] │
├─────────────────────────────────────────────┤
│ Your shortened URL: │
│ 🔗 short.ly/abc123 [📋 Copy] [📊 Stats]│
├─────────────────────────────────────────────┤
│ Recent Links │
│ • short.ly/xyz789 → example.com (52 clicks)│
│ • short.ly/def456 → github.com (8 clicks) │
└─────────────────────────────────────────────┘-- Recipes table
CREATE TABLE recipes (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
prep_time INTEGER,
cook_time INTEGER,
servings INTEGER,
difficulty VARCHAR(10),
image_url VARCHAR(500),
instructions TEXT[],
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Ingredients table
CREATE TABLE ingredients (
id SERIAL PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
category VARCHAR(50)
);
-- Recipe ingredients junction
CREATE TABLE recipe_ingredients (
recipe_id INTEGER REFERENCES recipes(id) ON DELETE CASCADE,
ingredient_id INTEGER REFERENCES ingredients(id),
quantity VARCHAR(50),
unit VARCHAR(20),
PRIMARY KEY (recipe_id, ingredient_id)
);GET /api/recipes - Search recipes with filtersGET /api/recipes/:id - Get recipe detailsGET /api/recipes/by-ingredients - Find recipes by ingredientsPOST /api/recipes - Add new recipe┌─────────────────────────────────────────────┐
│ Recipe Finder [🔍 Search recipes...] │
├─────────────────────────────────────────────┤
│ [🥗 All] [🍝 Italian] [🍛 Indian] [🥘 Asian]│
├─────────────────────────────────────────────┤
│ 🍝 Spaghetti Carbonara ⭐ 4.5 │
│ 🕐 30 min • 👥 4 servings • Easy │
│ Creamy pasta with eggs, cheese, bacon... │
├─────────────────────────────────────────────┤
│ 🍛 Chicken Biryani ⭐ 4.8 │
│ 🕐 45 min • 👥 6 servings • Medium │
│ Fragrant rice dish with spiced chicken... │
├─────────────────────────────────────────────┤
│ 🥗 Caesar Salad ⭐ 4.2 │
│ 🕐 15 min • 👥 2 servings • Easy │
│ Fresh romaine with classic dressing... │
└─────────────────────────────────────────────┘-- Habits table
CREATE TABLE habits (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL,
description TEXT,
frequency VARCHAR(20) DEFAULT 'daily',
target_count INTEGER DEFAULT 1,
color VARCHAR(7) DEFAULT '#6366f1',
icon VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Habit logs
CREATE TABLE habit_logs (
id SERIAL PRIMARY KEY,
habit_id INTEGER REFERENCES habits(id) ON DELETE CASCADE,
date DATE NOT NULL,
count INTEGER DEFAULT 1,
notes TEXT,
logged_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(habit_id, date)
);GET /api/habits - Get user habitsPOST /api/habits - Create habitPOST /api/habits/:id/log - Log habit completionGET /api/habits/:id/streak - Get current streakGET /api/habits/calendar - Get habit calendar data┌─────────────────────────────────────────────┐
│ Habit Tracker [+ Add] │
├─────────────────────────────────────────────┤
│ Today - Wednesday, June 25 │
├─────────────────────────────────────────────┤
│ 💧 Drink Water (6/8 glasses) │
│ ████████░░ 75% 🔥 12 day streak │
│ [+] Log another glass │
├─────────────────────────────────────────────┤
│ 🏃 Morning Run │
│ ✅ Completed 🔥 5 day streak │
│ Great job! Keep it up │
├─────────────────────────────────────────────┤
│ 📚 Read (0/30 minutes) │
│ ⬜ Not started 📊 Last: 2 days ago │
│ [Start Reading] │
├─────────────────────────────────────────────┤
│ This Week Progress │
│ Mon ✅✅⬜ Tue ✅✅⬜ Wed ✅⬜⬜ │
└─────────────────────────────────────────────┘-- Notes table
CREATE TABLE notes (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
content TEXT,
folder_id INTEGER REFERENCES folders(id),
tags TEXT[],
is_favorite BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Folders table
CREATE TABLE folders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL,
parent_id INTEGER REFERENCES folders(id),
color VARCHAR(7) DEFAULT '#6366f1'
);GET /api/notes - Get notes with search/filterPOST /api/notes - Create notePUT /api/notes/:id - Update noteGET /api/folders - Get folder structurePOST /api/notes/:id/export - Export as PDF/HTML┌─────────────────────────────────────────────┐
│ 📝 My Notes [🔍 Search] [+ New Note] │
├─────┬───────────────────────────────────────┤
│ 📁 │ # Meeting Notes - June 25, 2025 │
│Work │ │
│ 📁 │ ## Action Items │
│Pers │ - [ ] Follow up with client │
│ 📁 │ - [x] Prepare presentation │
│Code │ - [ ] Schedule next meeting │
│ │ │
│ 📄 │ ## Key Points │
│Note1│ - Budget approved for Q3 │
│ 📄 │ - New team member starting Monday │
│Note2│ - Product launch delayed to August │
│ ⭐ │ │
│Fav │ **Note:** Remember to update timeline │
└─────┴───────────────────────────────────────┘-- Generated passwords (optional storage)
CREATE TABLE password_history (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
service_name VARCHAR(255),
password_hash VARCHAR(255),
length INTEGER,
settings JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- User preferences
CREATE TABLE user_preferences (
user_id INTEGER PRIMARY KEY REFERENCES users(id),
default_length INTEGER DEFAULT 16,
include_uppercase BOOLEAN DEFAULT TRUE,
include_lowercase BOOLEAN DEFAULT TRUE,
include_numbers BOOLEAN DEFAULT TRUE,
include_symbols BOOLEAN DEFAULT TRUE,
exclude_ambiguous BOOLEAN DEFAULT FALSE
);POST /api/generate - Generate passwordGET /api/check-strength - Check password strengthPOST /api/save-password - Save password referenceGET /api/history - Get password history┌─────────────────────────────────────────────┐
│ Password Generator │
├─────────────────────────────────────────────┤
│ Generated Password: │
│ ┌─────────────────────────────────────────┐ │
│ │ Kp#9$mF2@nX8qW5! 🔒 Very Strong │ │
│ └─────────────────────────────────────────┘ │
│ [📋 Copy] [🔄 Generate New] [💾 Save] │
├─────────────────────────────────────────────┤
│ Settings: │
│ Length: [16 ] ◀───────────────▶ │
│ ☑ Uppercase (A-Z) ☑ Lowercase (a-z) │
│ ☑ Numbers (0-9) ☑ Symbols (!@#$) │
│ ☐ Exclude ambiguous characters │
├─────────────────────────────────────────────┤
│ Strength Meter: │
│ ████████████████████ 100% Very Strong │
├─────────────────────────────────────────────┤
│ Recent Passwords: │
│ • Gmail (16 chars) - 2 days ago │
│ • Facebook (20 chars) - 1 week ago │
└─────────────────────────────────────────────┘-- QR codes table
CREATE TABLE qr_codes (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
content TEXT NOT NULL,
type VARCHAR(20) DEFAULT 'text',
title VARCHAR(255),
qr_data TEXT NOT NULL,
downloads INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- QR scan analytics
CREATE TABLE qr_scans (
id SERIAL PRIMARY KEY,
qr_code_id INTEGER REFERENCES qr_codes(id) ON DELETE CASCADE,
ip_address INET,
user_agent TEXT,
scanned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);POST /api/qr/generate - Generate QR codeGET /api/qr/:id - Get QR code detailsGET /api/qr/:id/download - Download QR imagePOST /api/qr/:id/scan - Log QR scan┌─────────────────────────────────────────────┐
│ QR Code Generator │
├─────────────────────────────────────────────┤
│ Type: [Text ▼] [URL] [WiFi] [Contact] │
│ │
│ Content: │
│ ┌─────────────────────────────────────────┐ │
│ │ https://mywebsite.com │ │
│ └─────────────────────────────────────────┘ │
│ │
│ [Generate QR Code] │
├─────────────────────────────────────────────┤
│ ████████████████████ │
│ ██ ▄▄▄▄▄ █▀█▀▄██ ▄▄▄▄▄ ██ │
│ ██ █ █ ███▄ ██ █ █ ██ │
│ ██ █▄▄▄█ █▀█▀▄▄██ █▄▄▄█ ██ │
│ ████████████████████████████ │
│ │
│ [📱 Download PNG] [📊 Analytics] [🔗 Share] │
├─────────────────────────────────────────────┤
│ Recent QR Codes: │
│ • Website URL (45 scans) - 2 days ago │
│ • Contact Card (12 scans) - 1 week ago │
└─────────────────────────────────────────────┘-- Color palettes
CREATE TABLE palettes (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
name VARCHAR(255) NOT NULL,
description TEXT,
colors TEXT[] NOT NULL,
tags TEXT[],
is_public BOOLEAN DEFAULT FALSE,
likes INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Palette likes
CREATE TABLE palette_likes (
user_id INTEGER REFERENCES users(id),
palette_id INTEGER REFERENCES palettes(id) ON DELETE CASCADE,
PRIMARY KEY (user_id, palette_id)
);POST /api/palettes/generate - Generate random paletteGET /api/palettes - Get saved palettesPOST /api/palettes - Save paletteGET /api/palettes/trending - Get trending palettesPOST /api/palettes/:id/like - Like palette┌─────────────────────────────────────────────┐
│ Color Palette Generator │
├─────────────────────────────────────────────┤
│ ┌───────┬───────┬───────┬───────┬───────┐ │
│ │ #FF6B6B│ #4ECDC4│ #45B7D1│ #96CEB4│ #FFEAA7│ │
│ │ ████ │ ████ │ ████ │ ████ │ ████ │ │
│ │ ████ │ ████ │ ████ │ ████ │ ████ │ │
│ │ ████ │ ████ │ ████ │ ████ │ ████ │ │
│ └───────┴───────┴───────┴───────┴───────┘ │
│ │
│ [🎲 Generate] [💾 Save] [📋 Copy CSS] │
├─────────────────────────────────────────────┤
│ Generate from: │
│ [🎨 Random] [🖼️ Image] [🎯 Base Color] │
│ │
│ Style: [Modern ▼] [Pastel] [Bold] [Nature] │
├─────────────────────────────────────────────┤
│ My Saved Palettes: │
│ • Sunset Vibes (5 colors) ❤️ 23 │
│ • Ocean Blues (4 colors) ❤️ 18 │
│ • Forest Theme (6 colors) ❤️ 31 │
└─────────────────────────────────────────────┘-- Books table
CREATE TABLE books (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
isbn VARCHAR(13),
genre VARCHAR(100),
status VARCHAR(20) DEFAULT 'want_to_read',
rating INTEGER CHECK (rating >= 1 AND rating <= 5),
notes TEXT,
cover_url VARCHAR(500),
pages INTEGER,
date_started DATE,
date_finished DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Reading sessions
CREATE TABLE reading_sessions (
id SERIAL PRIMARY KEY,
book_id INTEGER REFERENCES books(id) ON DELETE CASCADE,
pages_read INTEGER NOT NULL,
duration_minutes INTEGER,
notes TEXT,
session_date DATE DEFAULT CURRENT_DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);GET /api/books - Get user's booksPOST /api/books - Add new bookPUT /api/books/:id/status - Update reading statusPOST /api/books/:id/session - Log reading sessionGET /api/books/stats - Get reading statisticsGET /api/books/search - Search external book database┌─────────────────────────────────────────────┐
│ My Library [🔍 Search] [+ Add Book] │
├─────────────────────────────────────────────┤
│ [📚 All] [📖 Reading] [✅ Finished] [⭐ Wishlist] │
├─────────────────────────────────────────────┤
│ 📚 The Great Gatsby ⭐⭐⭐⭐⭐ │
│ by F. Scott Fitzgerald │
│ 📖 Currently Reading • Page 85/180 │
│ ████████████░░░░░░░░ 47% │
├─────────────────────────────────────────────┤
│ 📚 1984 ⭐⭐⭐⭐⭐ │
│ by George Orwell │
│ ✅ Finished • Completed: June 20, 2025 │
│ "Mind-bending dystopian masterpiece..." │
├─────────────────────────────────────────────┤
│ 📚 Dune │
│ by Frank Herbert │
│ ⭐ Want to Read • Added: June 15, 2025 │
│ 688 pages • Sci-Fi │
├─────────────────────────────────────────────┤
│ 📊 This Month: 3 books • 847 pages read │
└─────────────────────────────────────────────┘Each project can be completed in 1-2 weeks and provides excellent portfolio pieces demonstrating full-stack development skills.