Next Starter

Build your next project with Next Starter

docs.title
common.loading

docs.sections.quickStart.title

docs.sections.quickStart.subtitle

docs.sections.quickStart.guide

1

docs.sections.quickStart.steps.clone

git clone https://github.com/yourusername/nextstarter.git
2

docs.sections.quickStart.steps.install

npm install
3

docs.sections.quickStart.steps.configure

docs.sections.quickStart.steps.configureDesc

4

docs.sections.quickStart.steps.start

npm run dev

docs.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.com

docs.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.version: v1.0docs.database.file: unified-database-setup.sql

📋 docs.database.overview.title

docs.database.overview.description

🚀 docs.database.overview.coreFeatures

docs.database.overview.features.tables
docs.database.overview.features.rpcFunctions
docs.database.overview.features.views
docs.database.overview.features.security
docs.database.overview.features.indexes
docs.database.overview.features.idempotent

📊 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.displayName

docs.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.security.usersTable
docs.database.security.creditsTable
docs.database.security.transactionsTable
docs.database.security.subscriptionsTable
docs.database.security.quotaTable
docs.database.security.eventsTable

💻 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 push

docs.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.database.notes.idempotent
docs.database.notes.transactions
docs.database.notes.rls
docs.database.notes.cleanup

docs.dbQuickRef.title

docs.dbQuickRef.subtitle

📋 docs.dbQuickRef.tablesOverview

docs.dbQuickRef.headers.tabledocs.dbQuickRef.headers.purposedocs.dbQuickRef.headers.fieldsdocs.dbQuickRef.headers.indexes
usersdocs.dbQuickRef.tables.users.purposeid, email, username, is_premium7
user_creditsdocs.dbQuickRef.tables.userCredits.purposeuser_id, credits, total_earned2
credit_transactionsdocs.dbQuickRef.tables.creditTransactions.purposeuser_id, amount, transaction_type5
user_quota_usagedocs.dbQuickRef.tables.quotaUsage.purposeuser_id, usage_type, amount3
payment_plansdocs.dbQuickRef.tables.paymentPlans.purposeplan_id, price, billing_cycle3
subscriptionsdocs.dbQuickRef.tables.subscriptions.purposeuser_id, stripe_subscription_id, status6
subscription_eventsdocs.dbQuickRef.tables.subscriptionEvents.purposeuser_id, event_type, stripe_event_id5

🔧 docs.dbQuickRef.rpcFunctions

docs.dbQuickRef.headers.functiondocs.dbQuickRef.headers.purposedocs.dbQuickRef.headers.paramsdocs.dbQuickRef.headers.returns
update_user_credits()docs.dbQuickRef.functions.updateCreditsuser_id, amount, type...JSONB
get_recent_transactions()docs.dbQuickRef.functions.getTransactionsuser_id, limit, offsetTABLE
check_payment_already_processed()docs.dbQuickRef.functions.checkPaymentstripe_event_idBOOLEAN
get_user_subscription_status()docs.dbQuickRef.functions.getSubscriptionuser_idTABLE
get_user_credits()docs.dbQuickRef.functions.getCreditsuser_idTABLE
cleanup_expired_sessions()docs.dbQuickRef.functions.cleanupdocs.dbQuickRef.noneINTEGER

📊 docs.dbQuickRef.dataViews

docs.dbQuickRef.headers.viewdocs.dbQuickRef.headers.purposedocs.dbQuickRef.headers.fields
user_subscription_statusdocs.dbQuickRef.views.subscriptionStatususer_id, subscription_status, plan_name
credit_transaction_summarydocs.dbQuickRef.views.transactionSummaryuser_id, total_transactions, total_earned
user_statsdocs.dbQuickRef.views.userStatsid, current_credits, subscription_status

🔒 docs.dbQuickRef.securitySummary

docs.dbQuickRef.headers.tabledocs.dbQuickRef.headers.policydocs.dbQuickRef.headers.permissions
usersdocs.dbQuickRef.security.usersPolicySELECT/UPDATE/INSERT
user_creditsdocs.dbQuickRef.security.creditsPolicySELECT/INSERT/UPDATE
credit_transactionsdocs.dbQuickRef.security.transactionsPolicySELECT/INSERT
user_quota_usagedocs.dbQuickRef.security.quotaPolicySELECT/INSERT
subscriptionsdocs.dbQuickRef.security.subscriptionsPolicySELECT/UPDATE/INSERT
subscription_eventsdocs.dbQuickRef.security.eventsPolicySELECT/INSERT

docs.dbQuickRef.triggersTitle

docs.dbQuickRef.headers.triggerdocs.dbQuickRef.headers.tabledocs.dbQuickRef.headers.action
update_updated_atusers, payment_plans, subscriptionsdocs.dbQuickRef.triggers.autoTimestamp
on_auth_user_createdauth.usersdocs.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.indexTip1
docs.dbQuickRef.performance.indexTip2

docs.dbQuickRef.performance.queryTips

docs.dbQuickRef.performance.queryTip1
docs.dbQuickRef.performance.queryTip2

🚨 docs.dbQuickRef.notes.title

docs.dbQuickRef.notes.rlsProtection
docs.dbQuickRef.notes.transactionConsistency
docs.dbQuickRef.notes.stripeDedupe
docs.dbQuickRef.notes.softDelete

docs.sections.deployment.title

docs.sections.deployment.subtitle

docs.sections.deployment.vercelDeploy

1

docs.sections.deployment.steps.connectGithub

docs.sections.deployment.steps.connectGithubDesc

2

docs.sections.deployment.steps.importVercel

docs.sections.deployment.steps.importVercelDesc

3

docs.sections.deployment.steps.configEnv

docs.sections.deployment.steps.configEnvDesc

4

docs.sections.deployment.steps.deploy

docs.sections.deployment.steps.deployDesc