Skip to content

Beta Launch Preparation Guide

Date: November 5, 2025 Status: Ready for Beta Launch Week (Nov 11-15) Version: 20251105.17:40


TL;DR - Your Action Items

✅ Already Complete

  1. Terms of Service & Privacy Policy - Fully deployed and GDPR-compliant
  2. Security Hardening - A- rating (production-ready)
  3. Team Features - All working (invitations, roles, billing)
  4. Database Backups - Configured on Neon
  5. Stripe Integration - Payment processing ready

🎯 To-Do This Week (Before Beta Launch)

  1. Payment Testing - Verify with real card (see Section 1 below)
  2. Email Setup - Configure support@codeslick.dev (see Section 2)
  3. Email Service - Integrate Resend.com (see Section 3)
  4. Beta Candidates - Identify 10-15 people (see Section 4)
  5. User Testing - Test full flows on codeslick.dev (see Section 5)

Section 1: Payment Testing Checklist ✅

Status: You mentioned you already did this. Verify these items:

Quick Verification Checklist

Did you test these scenarios?

  • Test 1.3: Complete payment with test card 4242 4242 4242 4242
  • Redirected back to CodeSlick after payment?
  • Success message displayed?

  • Test 1.4: Verify database updates

  • Team plan upgraded to "team"?
  • Subscription created with status "active"?
  • Invoice recorded as "paid"?

  • Test 1.5: Verify UI updates

  • Billing tab shows "Team Plan" badge?
  • "Manage Billing" button visible?
  • Member limit increased to 5?

  • Test 2.1: Access Stripe Customer Portal

  • Click "Manage Billing" redirects to Stripe portal?
  • Can view invoices and payment methods?

  • Test 2.4: Cancel subscription

  • Cancellation works?
  • Shows "Cancels on [date]" warning?

If You Haven't Tested These Yet

Run these quick tests on localhost:

# Terminal 1: Start dev server
npm run dev

# Terminal 2: Start Stripe webhook listener
stripe listen --forward-to localhost:3000/api/billing/webhook

# Browser:
1. Sign in with GitHub
2. Install GitHub App
3. Go to team settings  Billing tab
4. Click "Upgrade to Team Plan"
5. Use test card: 4242 4242 4242 4242
6. Verify success message
7. Check database for subscription
8. Click "Manage Billing" to test portal

Database Queries (on Neon dashboard):

-- Check if subscription was created
SELECT
  t.name AS team_name,
  t.plan,
  s.status,
  s.current_period_end,
  i.amount,
  i.status AS invoice_status
FROM teams t
LEFT JOIN subscriptions s ON s.team_id = t.id
LEFT JOIN invoices i ON i.team_id = t.id
WHERE t.id = 'YOUR_TEAM_ID';

Expected Result: plan = 'team', subscription status = 'active', invoice amount = 9900


Section 2: Set Up support@codeslick.dev Email

You have 2 options for email:

Cost: €6/month per user Time: 15 minutes setup

Steps: 1. Go to Google Workspace 2. Start 14-day free trial 3. Add domain: codeslick.dev 4. Verify domain ownership (add DNS TXT record) 5. Create email: support@codeslick.dev 6. Set up email forwarding to your personal email

DNS Records (add to your domain registrar):

Type: MX
Priority: 1
Value: ASPMX.L.GOOGLE.COM

Type: MX
Priority: 5
Value: ALT1.ASPMX.L.GOOGLE.COM

Option B: Email Forwarding Only (Free, Quick)

Cost: Free Time: 5 minutes

Steps: 1. Log in to your domain registrar (e.g., Namecheap, GoDaddy) 2. Find "Email Forwarding" settings 3. Add forwarding rule: - From: support@codeslick.dev - To: your-personal-email@gmail.com

Limitation: Can only receive emails, not send from support@codeslick.dev

Option C: Resend.com (Best for Beta)

Cost: Free up to 100 emails/day Time: 10 minutes

Steps: 1. Sign up at resend.com 2. Verify domain codeslick.dev (add DNS records) 3. Create API key 4. Add to .env.local:

RESEND_API_KEY=re_xxxxxxxxxxxxx

DNS Records (add these to your domain):

Type: TXT
Name: _resend
Value: [Provided by Resend after signup]

Type: CNAME
Name: resend._domainkey
Value: [Provided by Resend]

Recommendation: Use Option C (Resend.com) - it solves both receiving AND sending emails, which you'll need for invitations.


Section 3: Integrate Resend.com Email Service

Purpose: Send team invitation emails automatically

Time: 30 minutes

Step 1: Sign Up and Configure

  1. Go to resend.com and sign up
  2. Verify your domain:
  3. Dashboard → Domains → Add Domain
  4. Enter: codeslick.dev
  5. Add DNS records (TXT + CNAME) to your domain registrar
  6. Wait for verification (5-10 minutes)

Step 2: Get API Key

  1. Dashboard → API Keys → Create API Key
  2. Name: "CodeSlick Production"
  3. Permission: "Sending access"
  4. Copy the key: re_xxxxxxxxxxxxx

Step 3: Add to Environment Variables

File: .env.local

# Email Service (Resend.com)
RESEND_API_KEY=re_xxxxxxxxxxxxx
RESEND_FROM_EMAIL=support@codeslick.dev
RESEND_FROM_NAME=CodeSlick

Step 4: Install Resend SDK

npm install resend

Step 5: Create Email Service Helper

File: src/lib/email/resend-client.ts

import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function sendTeamInvitationEmail({
  to,
  teamName,
  inviterName,
  invitationUrl,
}: {
  to: string;
  teamName: string;
  inviterName: string;
  invitationUrl: string;
}) {
  try {
    await resend.emails.send({
      from: `${process.env.RESEND_FROM_NAME} <${process.env.RESEND_FROM_EMAIL}>`,
      to: [to],
      subject: `You've been invited to join ${teamName} on CodeSlick`,
      html: `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
          <h2>You've been invited to ${teamName}</h2>
          <p>${inviterName} has invited you to join their team on CodeSlick.</p>
          <p>CodeSlick provides automated security reviews for your GitHub pull requests.</p>
          <p>
            <a
              href="${invitationUrl}"
              style="background: #4F46E5; color: white; padding: 12px 24px; text-decoration: none; border-radius: 6px; display: inline-block;"
            >
              Accept Invitation
            </a>
          </p>
          <p style="color: #666; font-size: 14px;">
            This invitation will expire in 7 days.
          </p>
          <hr style="border: none; border-top: 1px solid #eee; margin: 24px 0;" />
          <p style="color: #999; font-size: 12px;">
            CodeSlick - Automated Security Reviews for GitHub PRs<br />
            <a href="https://codeslick.dev">codeslick.dev</a>
          </p>
        </div>
      `,
    });

    console.log(`✅ Invitation email sent to ${to}`);
    return { success: true };
  } catch (error) {
    console.error('❌ Failed to send invitation email:', error);
    return { success: false, error };
  }
}

export async function sendWelcomeEmail({
  to,
  userName,
}: {
  to: string;
  userName: string;
}) {
  try {
    await resend.emails.send({
      from: `${process.env.RESEND_FROM_NAME} <${process.env.RESEND_FROM_EMAIL}>`,
      to: [to],
      subject: 'Welcome to CodeSlick!',
      html: `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
          <h2>Welcome to CodeSlick, ${userName}!</h2>
          <p>Thanks for signing up. You're all set to start securing your code.</p>
          <h3>Next Steps:</h3>
          <ol>
            <li>Install the CodeSlick GitHub App</li>
            <li>Create or join a team</li>
            <li>Open a pull request to see CodeSlick in action</li>
          </ol>
          <p>
            <a
              href="https://codeslick.dev/teams"
              style="background: #4F46E5; color: white; padding: 12px 24px; text-decoration: none; border-radius: 6px; display: inline-block;"
            >
              Get Started
            </a>
          </p>
          <p>Need help? Reply to this email or check our <a href="https://codeslick.dev/help">documentation</a>.</p>
        </div>
      `,
    });

    console.log(`✅ Welcome email sent to ${to}`);
    return { success: true };
  } catch (error) {
    console.error('❌ Failed to send welcome email:', error);
    return { success: false, error };
  }
}

Step 6: Update Invitation Endpoint

File: src/app/api/teams/[id]/members/route.ts

Add at the top:

import { sendTeamInvitationEmail } from '@/lib/email/resend-client';

Replace the console.log invitation with actual email (around line 180):

// BEFORE (console logging)
console.log(`Invitation link: ${invitationUrl}`);

// AFTER (send real email)
if (process.env.RESEND_API_KEY) {
  await sendTeamInvitationEmail({
    to: email,
    teamName: team.name,
    inviterName: session.user.name || 'A team member',
    invitationUrl: invitationUrl,
  });
} else {
  // Fallback to console for development
  console.log(`Invitation link: ${invitationUrl}`);
}

Step 7: Test Email Sending

Test on localhost:

# Start dev server
npm run dev

# Browser:
1. Go to team settings  Members
2. Click "Invite Member"
3. Enter email: your-test-email@gmail.com
4. Submit
5. Check inbox for invitation email

Expected: Email arrives within 1-2 seconds with invitation link


Section 4: Identify 10-15 Beta Candidates

Use the templates from BETA_INVITATION_TEMPLATE.md to recruit beta users.

Target Audience

Who to invite: - DevOps engineers - Security engineers - Tech leads / Engineering managers - Startup CTOs - Developer teams (2-5 people)

Where to find them: 1. Personal Network (warmest leads) - Former colleagues - LinkedIn connections - GitHub followers - Twitter/X followers

  1. Professional Communities
  2. LinkedIn groups (DevOps, Security)
  3. Reddit: r/devops, r/security, r/programming
  4. Hacker News (Show HN post)
  5. Dev.to, Hashnode

  6. Cold Outreach

  7. Companies using GitHub (check job boards)
  8. Startups on Product Hunt
  9. Open source project maintainers

Candidate Tracking Template

Create a spreadsheet with these columns:

Name Company Channel Email Date Sent Status Notes
John Doe Acme Inc LinkedIn john@acme.com Nov 6 ⏳ Sent CTO, uses Python
Jane Smith Tech Co Email jane@tech.co Nov 6 ✅ Interested Wants call

Goal: 15 invitations sent → 8-10 responses → 5 signed up

Email Templates to Use

Warm Leads (people you know): - Use Template 1 from BETA_INVITATION_TEMPLATE.md - Personalize the intro - Reference specific project/tech stack

LinkedIn Connections: - Use Template 2 from BETA_INVITATION_TEMPLATE.md - Keep it professional but casual - Highlight B2B value (team features)

Reddit/HN: - Use Template 4 or 5 from BETA_INVITATION_TEMPLATE.md - Focus on technical details - Be transparent about solo founder status

Sample Personalized Email

Subject: CodeSlick Beta - Free Security Analysis for Your PRs

Hi [Name],

I noticed we're connected on LinkedIn and saw you're working at [Company].

I'm launching a beta for CodeSlick - automated security reviews that run on every GitHub PR. Think of it as having a security engineer on every code review, but automated.

What it does:
- Detects 79+ vulnerabilities (SQL injection, secrets, XSS, etc.)
- Posts findings as PR comments
- AI-powered fix suggestions
- Team dashboard & analytics

Beta offer:
✅ 4 weeks free (normally €99/month)
✅ Then 50% off for 3 months
✅ No credit card required

I'm looking for 5-10 teams to try it out. Since you're working on [specific tech], I thought CodeSlick might save your team some security headaches.

Interested? 5-min setup: https://codeslick.dev

Or reply with questions - happy to answer!

Best,
[Your Name]

Section 5: User Testing on CodeSlick.dev

Test these end-to-end flows as a real user:

Test Flow 1: New User Onboarding (15 min)

  1. Sign Up:
  2. Go to https://codeslick.dev
  3. Click "Sign in with GitHub"
  4. Authorize CodeSlick GitHub App
  5. Redirected to team selector page

  6. GitHub App Installation:

  7. Select repository to install CodeSlick on
  8. Grant permissions
  9. Team auto-created
  10. Redirected to team dashboard

  11. Verify Team Dashboard:

  12. See team name and plan (Free)
  13. See "0 PRs analyzed" counter
  14. Navigation works (Dashboard, Settings, Audit)

Test Flow 2: Team Upgrade & Payment (10 min)

  1. Upgrade to Team Plan:
  2. Go to Settings → Billing tab
  3. Click "Upgrade to Team Plan"
  4. Redirected to Stripe Checkout
  5. Enter test card: 4242 4242 4242 4242
  6. Complete payment
  7. Redirected back with success message

  8. Verify Upgrade:

  9. Badge shows "Team Plan"
  10. Member limit increased to 5
  11. "Manage Billing" button visible

Test Flow 3: Team Invitation (10 min)

  1. Invite Team Member:
  2. Go to Settings → Members tab
  3. Click "Invite Member"
  4. Enter email address
  5. Select role (Member)
  6. Click "Send Invitation"
  7. Success message shown
  8. Invitation appears in pending list

  9. Accept Invitation (use incognito window):

  10. Check email inbox
  11. Click invitation link
  12. Sign in with GitHub (different account)
  13. Accept invitation
  14. Added to team successfully
  15. Can see team dashboard

Test Flow 4: Code Analysis (5 min)

  1. Analyze Code:
  2. Go to "Analyze Code" page
  3. Team selector shows current team
  4. Paste vulnerable code (use example)
  5. Click "Analyze"
  6. Results appear within 2-3 seconds
  7. Issues displayed with severity badges
  8. Export report works (HTML, Markdown)

Test Flow 5: PR Analysis (15 min)

  1. Create Pull Request:
  2. Go to GitHub repository with CodeSlick installed
  3. Create a new branch
  4. Add vulnerable code (SQL injection, XSS, etc.)
  5. Open a pull request
  6. Wait 10-15 seconds for CodeSlick to analyze

  7. Verify PR Comments:

  8. CodeSlick bot posts PR comment
  9. Comment shows security findings
  10. Issues categorized by severity
  11. OWASP Top 10 mapping visible
  12. Fix suggestions provided

Test Flow 6: Cancel Subscription (5 min)

  1. Cancel & Reactivate:
  2. Go to Billing → Click "Manage Billing"
  3. In Stripe portal, click "Cancel subscription"
  4. Confirm cancellation
  5. Back in CodeSlick, see "Cancels on [date]" warning
  6. Click "Reactivate Subscription"
  7. Cancellation removed

Test Flow 7: Role Management (5 min)

  1. Change Member Role:
  2. Go to Settings → Members
  3. Click "Change Role" on a member
  4. Change from Member → Admin
  5. Save changes
  6. Verify role updated in list
  7. Log in as that member (verify admin access)

Expected Total Time: ~65 minutes


Section 6: Final Checklist Before Beta Launch

Technical Readiness

  • All 570 tests passing (run npm test)
  • Production build successful (run npm run build)
  • Environment variables configured on Vercel
  • Stripe live mode configured (webhook, products, prices)
  • Database backups enabled on Neon
  • PostHog analytics working
  • GitHub App approved and published
  • Terms of Service deployed at /terms
  • Privacy Policy deployed at /privacy
  • GDPR compliance verified
  • Cookie consent banner (optional for beta)

Email & Support

  • support@codeslick.dev email configured
  • Resend.com API key configured
  • Test invitation email sent successfully
  • Welcome email template ready

Beta Program

  • 10-15 beta candidates identified
  • Invitation emails drafted (personalized)
  • Beta pricing configured (50% off for 3 months)
  • Feedback process defined (15-min calls)

Monitoring & Analytics

  • PostHog dashboard accessible
  • Vercel Analytics working
  • Error tracking configured (Vercel logs)
  • Stripe dashboard monitored daily

Section 7: Beta Launch Timeline

Monday, Nov 11

  • Final payment testing with real card
  • Verify all systems operational
  • Send Batch 1 invitations (5 users)

Tuesday, Nov 12

  • Monitor signups and onboarding
  • Respond to support questions
  • Fix any critical bugs

Wednesday, Nov 13

  • Send Batch 2 invitations (5 users)
  • Schedule Week 1 feedback calls

Thursday-Friday, Nov 14-15

  • Conduct feedback calls
  • Iterate based on feedback
  • Prepare Week 2 improvements

Week 2-4 (Nov 18 - Dec 6)

  • Continue beta testing
  • Address feedback items
  • Begin payment conversion conversations
  • Target: 2-3 paying customers

Section 8: Success Metrics

Beta Launch Success

Target by Nov 30: - ✅ 5-10 beta users signed up - ✅ 3-5 teams with GitHub App installed - ✅ 20+ PRs analyzed - ✅ 2-3 paying customers (€98-245 MRR) - ✅ 80% positive feedback on UX - ✅ < 5 critical bugs reported

Key Metrics to Track

Weekly: - New signups - GitHub App installations - PRs analyzed - Team invitations sent - Active users (DAU/WAU)

Monthly: - Conversion rate (free → paid) - Churn rate - Monthly Recurring Revenue (MRR) - Average Revenue Per User (ARPU)


Section 9: Support Resources

  • Payment Testing: PAYMENT_TESTING_CHECKLIST.md (650 lines, 26 tests)
  • Beta Invitations: BETA_INVITATION_TEMPLATE.md (480 lines, 7 templates)
  • User Guide: TEAM_MEMBER_GUIDE.md (380 lines)
  • Beta Launch: BETA_LAUNCH_CHECKLIST.md (750 lines, 8 phases)

Contact Information

Your Email: support@codeslick.dev (once configured) Website: https://codeslick.dev GitHub: https://github.com/codeslick Analytics: PostHog dashboard


Section 10: Quick Action Summary

TODAY (Nov 5-6): 1. ✅ Verify payment testing complete (Section 1) 2. 🚀 Set up support@codeslick.dev email (Section 2 - Option C recommended) 3. 🚀 Integrate Resend.com (Section 3 - 30 min) 4. 🚀 Identify 10-15 beta candidates (Section 4 - 1 hour)

THIS WEEK (Nov 7-10): 5. 🚀 Test CodeSlick.dev end-to-end (Section 5 - 65 min) 6. 🚀 Draft personalized beta invitation emails 7. 🚀 Final production checklist review (Section 6)

BETA LAUNCH WEEK (Nov 11-15): 8. 🚀 Send Batch 1 invitations (5 users) 9. 🚀 Monitor onboarding and support 10. 🚀 Send Batch 2 invitations (5 users) 11. 🚀 Conduct feedback calls


Document Created: November 5, 2025 Phase: Beta Launch Preparation Status: Ready for Action 🚀 Next Milestone: First paying customer (Nov 2025)