App spec + visual mockups for fatherphi.com
A simple site where viewers submit AI experiment ideas, vote on them, and FatherPhi picks from the top each week.
Logged-in users can submit ideas for AI experiments, tools to test, or skit concepts.
One vote per user per idea. Leaderboard shows most-wanted experiments.
Checkbox during signup (pre-checked) to join Master of AI newsletter.
Mark ideas as "Planned" or "Filmed" with links to the resulting video.
Three tables. Keep it simple.
// Users table
users {
id: uuid // primary key
google_id: string // from OAuth
email: string
name: string
avatar_url: string // Google profile pic
newsletter_opt_in: boolean // did they check the box?
is_admin: boolean // default false, true for you
created_at: timestamp
}
// Ideas table
ideas {
id: uuid // primary key
user_id: uuid // foreign key โ users
title: string // short headline
description: string // optional longer explanation
status: enum // 'open' | 'planned' | 'filmed'
video_url: string? // YouTube link when filmed
created_at: timestamp
}
// Votes table (join table)
votes {
id: uuid // primary key
user_id: uuid // foreign key โ users
idea_id: uuid // foreign key โ ideas
created_at: timestamp
// unique constraint on (user_id, idea_id) โ one vote per user per idea
}
-- Get ideas sorted by vote count (leaderboard)
SELECT ideas.*, COUNT(votes.id) as vote_count
FROM ideas
LEFT JOIN votes ON votes.idea_id = ideas.id
GROUP BY ideas.id
ORDER BY vote_count DESC;
-- Check if user voted for an idea
SELECT * FROM votes
WHERE user_id = :current_user AND idea_id = :idea_id;
-- Get newsletter subscribers (for export)
SELECT email, name FROM users
WHERE newsletter_opt_in = true;
| Route | Page | Auth Required |
|---|---|---|
/ |
Home โ idea leaderboard + submit CTA | No (voting requires login) |
/submit |
Submit idea form | Yes |
/my-ideas |
User's submitted ideas + votes | Yes |
/admin |
Manage ideas, update status, export emails | Yes + is_admin |
Submit your AI experiment ideas. Vote for the ones you want to see. I'll film the top picks each week.
What AI experiment should I try? Best ideas get filmed.
Pick based on what you're comfortable with. Here are two options:
React framework, handles routing + API
Postgres + Auth + Realtime, free tier generous
Deploy with git push, free tier works
Style quickly, use your design tokens
Why this: Supabase has built-in Google OAuth. One command to set up. Database is ready. You're building, not configuring.
Lighter than React, fast to learn
Simple database, edge-hosted
Lightweight auth library
Simple hosting, free tier
| Method | Endpoint | Description | Auth |
|---|---|---|---|
GET |
/api/ideas |
List ideas (sortable: top, newest, filmed) | No |
POST |
/api/ideas |
Create new idea | Yes |
POST |
/api/ideas/:id/vote |
Toggle vote on idea | Yes |
PATCH |
/api/ideas/:id |
Update status (admin only) | Admin |
GET |
/api/auth/google |
Initiate Google OAuth | No |
GET |
/api/auth/callback |
OAuth callback, create/login user | No |
GET |
/api/admin/export-emails |
CSV of newsletter subscribers | Admin |
Two options depending on how automated you want it.
newsletter_opt_in = trueGood enough to start. Do this weekly.
// When user signs up with newsletter_opt_in = true
// Call your email provider's API
if (user.newsletter_opt_in) {
await fetch('https://api.beehiiv.com/v2/subscribers', {
method: 'POST',
headers: { Authorization: `Bearer ${BEEHIIV_API_KEY}` },
body: JSON.stringify({
email: user.email,
publication_id: 'your-publication-id'
})
});
}
Add this once you have volume. Not needed day one.
What to build first vs. what to add later.
| โ | Google OAuth login |
| โ | Submit idea (title only, skip description) |
| โ | Vote on ideas |
| โ | Leaderboard sorted by votes |
| โ | Newsletter checkbox on signup |
| โ | Admin: export emails as CSV |
| โณ | Status tags (planned/filmed) |
| โณ | Link to YouTube video when filmed |
| โณ | Description field on ideas |
| โณ | "My Ideas" page |
| โณ | Auto-sync to email provider |
| โณ | Comments on ideas |
| โณ | Search/filter |