Next Starter
Build your next project with Next Starter
docs.sections.quickStart.title
docs.sections.quickStart.subtitle
docs.sections.quickStart.guide
docs.sections.quickStart.steps.clone
git clone https://github.com/yourusername/nextstarter.gitdocs.sections.quickStart.steps.install
npm installdocs.sections.quickStart.steps.configure
docs.sections.quickStart.steps.configureDesc
docs.sections.quickStart.steps.start
npm run devdocs.sections.techStack.title
docs.sections.techStack.subtitle
docs.sections.techStack.coreStack
docs.sections.techStack.frontendTech
- docs.sections.techStack.frontendItems.nextjs
- docs.sections.techStack.frontendItems.typescript
- docs.sections.techStack.frontendItems.tailwind
- docs.sections.techStack.frontendItems.framer
docs.sections.techStack.backendServices
- docs.sections.techStack.backendItems.supabase
- docs.sections.techStack.backendItems.stripe
- docs.sections.techStack.backendItems.vercel
- docs.sections.techStack.backendItems.github
docs.sections.configuration.title
docs.sections.configuration.subtitle
docs.sections.configuration.envConfig
docs.sections.configuration.required
- docs.sections.configuration.requiredItems.supabaseUrl
- docs.sections.configuration.requiredItems.supabaseKey
docs.sections.configuration.optional
- docs.sections.configuration.optionalItems.stripeSecret
- docs.sections.configuration.optionalItems.stripePublic
- docs.sections.configuration.optionalItems.gaId
- docs.sections.configuration.optionalItems.resendKey
- docs.sections.configuration.optionalItems.resendEmail
docs.sections.email.title
docs.sections.email.subtitle
docs.sections.email.setup
docs.sections.email.envVars
RESEND_API_KEY=your_resend_api_key
RESEND_ADMIN_EMAIL=admin@yourdomain.comdocs.sections.email.description
- RESEND_API_KEY: docs.sections.email.apiKeyDesc
- RESEND_ADMIN_EMAIL: docs.sections.email.adminEmailDesc
docs.sections.email.importantNote
docs.database.title
docs.database.subtitle
📋 docs.database.overview.title
docs.database.overview.description
🚀 docs.database.overview.coreFeatures
📊 docs.database.tables.title
1. docs.database.tables.userSystem
docs.database.tables.users.title
docs.database.tables.users.description
id, email, username, avatar_url, is_premium, language, theme_preference...
docs.database.tables.mainFields:
-- docs.database.tables.users.basicInfo
id UUID PRIMARY KEY -- docs.database.tables.users.fields.id
email TEXT -- docs.database.tables.users.fields.email
username TEXT -- docs.database.tables.users.fields.username
avatar_url TEXT -- docs.database.tables.users.fields.avatar
is_premium BOOLEAN DEFAULT false -- docs.database.tables.users.fields.premium
language TEXT DEFAULT 'en' -- docs.database.tables.users.fields.language
theme_preference TEXT DEFAULT 'system' -- docs.database.tables.users.fields.theme
first_name TEXT -- docs.database.tables.users.fields.firstName
last_name TEXT -- docs.database.tables.users.fields.lastName
display_name TEXT -- docs.database.tables.users.fields.displayNamedocs.database.tables.userCredits.title
docs.database.tables.userCredits.description
user_id, credits, total_earned, total_spent, last_updated
docs.database.tables.creditTransactions.title
docs.database.tables.creditTransactions.description
user_id, amount, transaction_type, description, reference_id
2. docs.database.tables.paymentSystem
docs.database.tables.paymentPlans.title
docs.database.tables.paymentPlans.description
plan_id, price, currency, billing_cycle, stripe_price_id, quota
docs.database.tables.subscriptions.title
docs.database.tables.subscriptions.description
user_id, stripe_customer_id, stripe_subscription_id, status
🔧 docs.database.rpc.title
docs.database.rpc.coreFunctions
update_user_credits()
docs.database.rpc.updateCredits
-- docs.database.rpc.params: user_id, amount, type, description
SELECT update_user_credits(
'user-uuid',
100,
'earn',
'Task completed'
);get_user_subscription_status()
docs.database.rpc.getSubscription
-- docs.database.rpc.returnsSubscription
SELECT * FROM get_user_subscription_status('user-uuid');check_payment_already_processed()
docs.database.rpc.checkPayment
-- docs.database.rpc.preventDuplicate
SELECT check_payment_already_processed('evt_stripe_event_id');📈 docs.database.views.title
docs.database.views.predefined
user_subscription_status
docs.database.views.subscriptionStatus
credit_transaction_summary
docs.database.views.transactionSummary
user_stats
docs.database.views.userStats
🔒 docs.database.security.title
Row Level Security (RLS)
docs.database.security.description
💻 docs.database.usage.title
docs.database.usage.install
# 1. docs.database.usage.step1
# docs.database.usage.step1Detail
# 2. docs.database.usage.step2
supabase db reset
supabase db pushdocs.database.usage.examples
-- docs.database.usage.getUserInfo
SELECT * FROM user_stats WHERE id = 'user-uuid';
-- docs.database.usage.updateCredits
SELECT update_user_credits('user-uuid', 100, 'earn', 'Task completed');
-- docs.database.usage.viewTransactions
SELECT * FROM get_recent_transactions('user-uuid', 20, 0);
-- docs.database.usage.checkSubscription
SELECT * FROM get_user_subscription_status('user-uuid');⚠️ docs.database.notes.title
docs.dbQuickRef.title
docs.dbQuickRef.subtitle
📋 docs.dbQuickRef.tablesOverview
| docs.dbQuickRef.headers.table | docs.dbQuickRef.headers.purpose | docs.dbQuickRef.headers.fields | docs.dbQuickRef.headers.indexes |
|---|---|---|---|
users | docs.dbQuickRef.tables.users.purpose | id, email, username, is_premium | 7 |
user_credits | docs.dbQuickRef.tables.userCredits.purpose | user_id, credits, total_earned | 2 |
credit_transactions | docs.dbQuickRef.tables.creditTransactions.purpose | user_id, amount, transaction_type | 5 |
user_quota_usage | docs.dbQuickRef.tables.quotaUsage.purpose | user_id, usage_type, amount | 3 |
payment_plans | docs.dbQuickRef.tables.paymentPlans.purpose | plan_id, price, billing_cycle | 3 |
subscriptions | docs.dbQuickRef.tables.subscriptions.purpose | user_id, stripe_subscription_id, status | 6 |
subscription_events | docs.dbQuickRef.tables.subscriptionEvents.purpose | user_id, event_type, stripe_event_id | 5 |
🔧 docs.dbQuickRef.rpcFunctions
| docs.dbQuickRef.headers.function | docs.dbQuickRef.headers.purpose | docs.dbQuickRef.headers.params | docs.dbQuickRef.headers.returns |
|---|---|---|---|
update_user_credits() | docs.dbQuickRef.functions.updateCredits | user_id, amount, type... | JSONB |
get_recent_transactions() | docs.dbQuickRef.functions.getTransactions | user_id, limit, offset | TABLE |
check_payment_already_processed() | docs.dbQuickRef.functions.checkPayment | stripe_event_id | BOOLEAN |
get_user_subscription_status() | docs.dbQuickRef.functions.getSubscription | user_id | TABLE |
get_user_credits() | docs.dbQuickRef.functions.getCredits | user_id | TABLE |
cleanup_expired_sessions() | docs.dbQuickRef.functions.cleanup | docs.dbQuickRef.none | INTEGER |
📊 docs.dbQuickRef.dataViews
| docs.dbQuickRef.headers.view | docs.dbQuickRef.headers.purpose | docs.dbQuickRef.headers.fields |
|---|---|---|
user_subscription_status | docs.dbQuickRef.views.subscriptionStatus | user_id, subscription_status, plan_name |
credit_transaction_summary | docs.dbQuickRef.views.transactionSummary | user_id, total_transactions, total_earned |
user_stats | docs.dbQuickRef.views.userStats | id, current_credits, subscription_status |
🔒 docs.dbQuickRef.securitySummary
| docs.dbQuickRef.headers.table | docs.dbQuickRef.headers.policy | docs.dbQuickRef.headers.permissions |
|---|---|---|
users | docs.dbQuickRef.security.usersPolicy | SELECT/UPDATE/INSERT |
user_credits | docs.dbQuickRef.security.creditsPolicy | SELECT/INSERT/UPDATE |
credit_transactions | docs.dbQuickRef.security.transactionsPolicy | SELECT/INSERT |
user_quota_usage | docs.dbQuickRef.security.quotaPolicy | SELECT/INSERT |
subscriptions | docs.dbQuickRef.security.subscriptionsPolicy | SELECT/UPDATE/INSERT |
subscription_events | docs.dbQuickRef.security.eventsPolicy | SELECT/INSERT |
⚡ docs.dbQuickRef.triggersTitle
| docs.dbQuickRef.headers.trigger | docs.dbQuickRef.headers.table | docs.dbQuickRef.headers.action |
|---|---|---|
update_updated_at | users, payment_plans, subscriptions | docs.dbQuickRef.triggers.autoTimestamp |
on_auth_user_created | auth.users | docs.dbQuickRef.triggers.newUserInit |
🔍 docs.dbQuickRef.queryPatterns
docs.dbQuickRef.queries.getUserInfo
SELECT * FROM user_stats WHERE id = 'user-uuid';docs.dbQuickRef.queries.updateCredits
SELECT update_user_credits(
'user-uuid', 100, 'earn', 'Task completed'
);docs.dbQuickRef.queries.viewTransactions
SELECT * FROM get_recent_transactions('user-uuid', 20, 0);docs.dbQuickRef.queries.checkSubscription
SELECT * FROM get_user_subscription_status('user-uuid');📈 docs.dbQuickRef.performance.title
docs.dbQuickRef.performance.indexOptimization
docs.dbQuickRef.performance.queryTips
🚨 docs.dbQuickRef.notes.title
docs.sections.deployment.title
docs.sections.deployment.subtitle
docs.sections.deployment.vercelDeploy
docs.sections.deployment.steps.connectGithub
docs.sections.deployment.steps.connectGithubDesc
docs.sections.deployment.steps.importVercel
docs.sections.deployment.steps.importVercelDesc
docs.sections.deployment.steps.configEnv
docs.sections.deployment.steps.configEnvDesc
docs.sections.deployment.steps.deploy
docs.sections.deployment.steps.deployDesc