Your full-stack web application promote.social has been fully built and is ready for deployment. This document provides a complete overview of what's been created.
- β Landing page with hero section and feature overview
- β Authentication system (signup/login)
- β Task browsing page with filters
- β Task creation form
- β Task detail page with completion flow
- β Task management page (for creators to approve/reject)
- β User dashboard with stats and task lists
- β User profile page
- β Responsive UI with Tailwind CSS
- β Reusable components (Button, Card, TaskCard, etc.)
- β PostgreSQL database with full schema
- β Authentication with email/password
- β Row Level Security (RLS) policies
- β Storage bucket for proof uploads
- β Server actions for secure operations
- β Database migrations
- β Users table (profiles, points)
- β Tasks table (promotions)
- β Task completions table (submissions)
- β RLS policies for security
- β Indexes for performance
cd /Users/silaspuma/Documents/GitHub/promote-social
npm install- Go to https://supabase.com
- Create a new project
- Go to Project Settings > API
- Copy URL and Anon Key
cp .env.example .env.local
# Edit .env.local with your Supabase credentials- In Supabase, go to SQL Editor
- Open
supabase/migrations/001_initial_schema.sql - Copy all content and paste into SQL Editor
- Click "Run"
- In Supabase, go to Storage
- Create bucket:
task-proofs - Make it public
npm run dev
# Visit http://localhost:3000promote-social/
βββ app/ # Next.js App Router
β βββ (auth)/
β β βββ signup/page.tsx # Sign up page
β β βββ login/page.tsx # Login page
β βββ browse/page.tsx # Browse and filter tasks
β βββ create-task/page.tsx # Create new task
β βββ dashboard/page.tsx # User dashboard
β βββ profile/page.tsx # User profile
β βββ tasks/
β β βββ [id]/page.tsx # Task detail (complete task)
β β βββ [id]/manage/page.tsx # Task management (approve/reject)
β βββ layout.tsx # Root layout
β βββ page.tsx # Landing page
β βββ globals.css # Global styles
β
βββ components/ # Reusable UI Components
β βββ Header.tsx # Navigation header
β βββ Footer.tsx # Footer with disclaimer
β βββ Button.tsx # Styled button component
β βββ Card.tsx # Card wrapper component
β βββ TaskCard.tsx # Task display card
β
βββ lib/ # Utilities & Server Actions
β βββ supabase.ts # Supabase client
β βββ types.ts # TypeScript interfaces
β βββ actions.ts # Server actions for data
β
βββ supabase/
β βββ migrations/
β βββ 001_initial_schema.sql # Database schema
β
βββ public/ # Static assets
βββ .env.example # Environment template
βββ .gitignore # Git ignore rules
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript config
βββ next.config.js # Next.js config
βββ tailwind.config.js # Tailwind config
βββ postcss.config.js # PostCSS config
β
βββ README.md # Project overview
βββ SETUP.md # Detailed setup guide
βββ QUICK_START.md # Quick reference
- Email/password authentication
- User profiles with points balance
- Task history tracking
- User rank/tier system
- New users start with 50 points
- Earn points by completing tasks
- Spend points to create tasks
- Cost = reward Γ max_completions
- Create tasks for 13+ platforms
- 4 action types (follow, subscribe, like, comment)
- Task status tracking (active, paused, completed)
- Automatic task closure at max completions
- Browse and filter tasks
- Submit proof (image upload)
- Creator approval/rejection flow
- Automatic point transfer on approval
- Anti-abuse measures (no self-completion, etc.)
- TikTok, Instagram, Facebook, Reddit, X (Twitter)
- YouTube, Medium, Substack, Threads, Bluesky
- Quora, Mastodon, Product Hunt
- Follow
- Subscribe
- Like
- Comment
id (UUID) -- Primary key, linked to auth
username (TEXT) -- Unique username
points (INTEGER) -- Current point balance
created_at (TIMESTAMP) -- Account creation timeid (UUID) -- Primary key
creator_id (UUID) -- Foreign key to users
title (TEXT) -- Task title
platform (TEXT) -- Social platform
action_type (TEXT) -- Action to perform
link (TEXT) -- URL to profile/content
reward (INTEGER) -- Points per completion
max_completions (INT) -- Completion limit
completed_count (INT) -- Current completions
status (TEXT) -- active, paused, completed
created_at (TIMESTAMP) -- Creation timeid (UUID) -- Primary key
task_id (UUID) -- Foreign key to tasks
user_id (UUID) -- Foreign key to users
proof_url (TEXT) -- Storage path to proof
status (TEXT) -- pending, approved, rejected
created_at (TIMESTAMP) -- Submission time
updated_at (TIMESTAMP) -- Last update time- All tables protected with RLS policies
- Users can only see relevant data
- Creators can only approve their own tasks
- Users cannot complete their own tasks
- Unique completion per user per task
- Proof submission required
- Manual creator approval process
- No duplicate rewards
- Push to GitHub
- Create Vercel account
- Import GitHub repo
- Set environment variables
- Deploy
- Already hosted (no additional setup)
- PostgreSQL database included
- Authentication built-in
- Storage included
See SETUP.md for detailed deployment instructions.
| File | Purpose |
|---|---|
app/page.tsx |
Landing page |
app/auth/signup/page.tsx |
User registration |
app/auth/login/page.tsx |
User login |
app/browse/page.tsx |
Task discovery |
app/create-task/page.tsx |
Task creation |
app/tasks/[id]/page.tsx |
Task detail & completion |
app/tasks/[id]/manage/page.tsx |
Approve/reject completions |
app/dashboard/page.tsx |
User dashboard |
app/profile/page.tsx |
User profile |
lib/actions.ts |
Server actions for data operations |
supabase/migrations/001_initial_schema.sql |
Database schema |
getCurrentUser()- Get authenticated usergetUserById(id)- Get user detailsupdateUserPoints(id, amount)- Update points
createTask(creator, data)- Create new taskgetTask(id)- Get task detailsgetTasks(filters)- Get all tasks with filtersupdateTaskStatus(id, status)- Change task status
createTaskCompletion(task, user, proof)- Submit completionapproveTaskCompletion(id)- Approve submissionrejectTaskCompletion(id)- Reject submission
<Button variant="primary" size="lg" loading={false}>
Click Me
</Button><Card className="p-4">
Content goes here
</Card><TaskCard task={task} creator={creator} />- Sign up User A (gets 50 points)
- Create task as User A (spends points)
- Sign up User B
- Browse tasks as User B
- Complete task as User B (submit proof)
- Log back to User A
- Approve completion in task management
- Verify User B gets points
- Check task closes when max reached
- Not affiliated with any social platform
- Users must comply with platform TOS
- Users are responsible for legal compliance
- Include disclaimer in footer (already done)
- Review and test complete user flow
- Verify Supabase configuration
- Test task creation and approval
- Configure production domain in Supabase
- Set up monitoring/analytics
- Review RLS policies
- Test edge cases and error handling
- README.md - Project overview and features
- SETUP.md - Detailed setup and deployment guide
- QUICK_START.md - Quick reference and commands
- This file - Complete project summary
-
Local Development
- Follow Quick Start section above
- Test all features locally
- Create test data
-
Production Setup
- Follow SETUP.md deployment section
- Configure Supabase for production
- Deploy to Vercel
- Monitor for issues
-
Future Enhancements
- Admin dashboard
- User reputation system
- Email notifications
- Two-factor authentication
- API for third-party integrations
- Mobile app
- Setup Issues β See SETUP.md
- API Questions β See lib/actions.ts
- Component Usage β See components/ folder
- Database Schema β See supabase/migrations/
Your promote.social application is ready to go. Start with local development, test thoroughly, and deploy when ready.
Happy building! π