Skip to content

Commit e991d8c

Browse files
authored
Merge pull request #9 from hasnaintypes/develop
Implement user authentication, email flows, and dashboard UI enhancements
2 parents b0d3817 + 56fb558 commit e991d8c

File tree

165 files changed

+25669
-14427
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+25669
-14427
lines changed

.env.example

Lines changed: 62 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,70 @@
1-
### Variables generated for cloud via npx convex dev
1+
# ============================================================
2+
# Sendable - Environment Variables
3+
# ============================================================
4+
# Copy this file to .env.local and fill in the values.
5+
# Variables prefixed with NEXT_PUBLIC_ are exposed to the browser.
6+
# All other variables are server-side only.
7+
# ============================================================
8+
9+
# ── Convex ──────────────────────────────────────────────────
10+
# Generated by `npx convex dev` — replace with your deployment values
211
CONVEX_DEPLOYMENT=dev:adjective-animal-123
312
NEXT_PUBLIC_CONVEX_URL=https://adjective-animal-123.convex.cloud
13+
NEXT_PUBLIC_CONVEX_SITE_URL=https://adjective-animal-123.convex.site
414

15+
# ── Site URL ────────────────────────────────────────────────
16+
# Must match your deployment URL (used for auth origins, email links, CORS)
17+
SITE_URL=http://localhost:3000
18+
NEXT_PUBLIC_SITE_URL=http://localhost:3000
519

6-
### Variables to be manually set for both cloud and self hosted
7-
NEXT_PUBLIC_SITE_URL=https://localhost:3000
8-
SITE_URL=https://localhost:3000
20+
# ── Auth (Better Auth) ─────────────────────────────────────
21+
# Generate a random secret: `openssl rand -base64 32`
22+
BETTER_AUTH_SECRET=your-random-secret-here
923

24+
# ── Email Provider ──────────────────────────────────────────
25+
# Which provider to use: "resend" (default) or "smtp"
26+
# Set to "smtp" for local development with Mailpit/Mailtrap
27+
EMAIL_PROVIDER=resend
1028

11-
### Variables to be manually set for cloud only
12-
NEXT_PUBLIC_CONVEX_SITE_URL=https://adjective-animal-123.convex.site
29+
# ── Resend (production email) ──────────────────────────────
30+
# Get your API key at https://resend.com/api-keys
31+
RESEND_API_KEY=re_xxxxxxxxxxxx
32+
33+
# Optional: restrict Resend to only send to this email (useful for free tier)
34+
# RESEND_VERIFIED_RECIPIENT=your-verified@email.com
35+
36+
# ── SMTP (development / fallback email) ────────────────────
37+
# For local dev, use Mailpit (localhost:1025) or Mailtrap
38+
# SMTP_HOST=localhost
39+
# SMTP_PORT=1025
40+
# SMTP_USER=
41+
# SMTP_PASS=
42+
# SMTP_SECURE=false
43+
# SMTP_FROM_NAME=Sendable
44+
# SMTP_FROM_EMAIL=noreply@sendable.dev
45+
46+
# ── OAuth Providers (optional) ─────────────────────────────
47+
# Uncomment and configure when ready to enable social auth
48+
49+
# GitHub OAuth: https://github.com/settings/developers
50+
# GITHUB_CLIENT_ID=
51+
# GITHUB_CLIENT_SECRET=
52+
53+
# Google OAuth: https://console.cloud.google.com/apis/credentials
54+
# GOOGLE_CLIENT_ID=
55+
# GOOGLE_CLIENT_SECRET=
56+
57+
# Slack OAuth: https://api.slack.com/apps
58+
# SLACK_CLIENT_ID=
59+
# SLACK_CLIENT_SECRET=
1360

61+
# ── Logging (BetterStack / Logtail) ────────────────────────
62+
# Get your source token at https://logs.betterstack.com/source-tokens
63+
# When set, production logs are forwarded to BetterStack.
64+
# When not set, logs only go to console (ideal for local dev).
65+
# LOGTAIL_SOURCE_TOKEN=
1466

15-
### Variables to be manually set for self hosted only
16-
# CONVEX_SELF_HOSTED_URL='http://127.0.0.1:3210'
17-
# CONVEX_SELF_HOSTED_ADMIN_KEY='<replace-with-admin-key>'
18-
# NEXT_PUBLIC_CONVEX_URL='http://127.0.0.1:3210'
19-
# NEXT_PUBLIC_CONVEX_SITE_URL='http://127.0.0.1:3211'
67+
# ── Convex Self-Hosted (optional) ──────────────────────────
68+
# Only needed if running Convex locally instead of cloud
69+
# CONVEX_SELF_HOSTED_URL=http://127.0.0.1:3210
70+
# CONVEX_SELF_HOSTED_ADMIN_KEY=<replace-with-admin-key>

.github/workflows/ci.yml

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,78 +10,100 @@ jobs:
1010
lint-and-typecheck:
1111
name: Lint & Type Check
1212
runs-on: ubuntu-latest
13-
13+
14+
env:
15+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16+
1417
steps:
1518
- name: Checkout code
1619
uses: actions/checkout@v4
1720

18-
- name: Setup Node.js
21+
# Setup pnpm (uses version from package.json automatically)
22+
- name: Setup pnpm
23+
uses: pnpm/action-setup@v4
24+
25+
# Setup Node.js
26+
- name: Setup Node
1927
uses: actions/setup-node@v4
2028
with:
21-
node-version: '20'
22-
cache: 'npm'
29+
node-version: 20
30+
cache: pnpm
2331

32+
# Install dependencies
2433
- name: Install dependencies
25-
run: npm ci
34+
run: pnpm install --frozen-lockfile
2635

2736
- name: Run ESLint
28-
run: npm run lint
37+
run: pnpm lint
2938
continue-on-error: true
3039

3140
- name: Type check frontend
32-
run: npx tsc --noEmit
41+
run: pnpm exec tsc --noEmit
3342

3443
- name: Type check Convex backend
35-
run: npx tsc -p convex --noEmit
44+
run: pnpm exec tsc -p convex --noEmit
45+
3646

3747
build:
3848
name: Build Application
3949
runs-on: ubuntu-latest
4050
needs: lint-and-typecheck
41-
51+
52+
env:
53+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54+
4255
steps:
4356
- name: Checkout code
4457
uses: actions/checkout@v4
4558

46-
- name: Setup Node.js
59+
- name: Setup pnpm
60+
uses: pnpm/action-setup@v4
61+
62+
- name: Setup Node
4763
uses: actions/setup-node@v4
4864
with:
49-
node-version: '20'
50-
cache: 'npm'
65+
node-version: 20
66+
cache: pnpm
5167

5268
- name: Install dependencies
53-
run: npm ci
69+
run: pnpm install --frozen-lockfile
5470

5571
- name: Set up Convex
5672
env:
5773
CONVEX_DEPLOY_KEY: ${{ secrets.CONVEX_DEPLOY_KEY }}
5874
CONVEX_DEPLOYMENT: ${{ secrets.CONVEX_DEPLOYMENT }}
59-
run: |
60-
npx convex dev --once --configure=new
75+
run: pnpm exec convex dev --once --configure=new
6176

6277
- name: Build Next.js
6378
env:
6479
CONVEX_DEPLOY_KEY: ${{ secrets.CONVEX_DEPLOY_KEY }}
6580
CONVEX_DEPLOYMENT: ${{ secrets.CONVEX_DEPLOYMENT }}
66-
run: npm run build
81+
run: pnpm build
82+
6783

6884
check-formatting:
6985
name: Check Formatting
7086
runs-on: ubuntu-latest
71-
87+
88+
env:
89+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
90+
7291
steps:
7392
- name: Checkout code
7493
uses: actions/checkout@v4
7594

76-
- name: Setup Node.js
95+
- name: Setup pnpm
96+
uses: pnpm/action-setup@v4
97+
98+
- name: Setup Node
7799
uses: actions/setup-node@v4
78100
with:
79-
node-version: '20'
80-
cache: 'npm'
101+
node-version: 20
102+
cache: pnpm
81103

82104
- name: Install dependencies
83-
run: npm ci
105+
run: pnpm install --frozen-lockfile
84106

85107
- name: Check Prettier formatting
86-
run: npx prettier --check "src/**/*.{ts,tsx,js,jsx,json,css,md}" "convex/**/*.{ts,js}"
87-
continue-on-error: true
108+
run: pnpm exec prettier --check "src/**/*.{ts,tsx,js,jsx,json,css,md}" "convex/**/*.{ts,js}"
109+
continue-on-error: true

.github/workflows/welcome.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
with:
2323
repo-token: ${{ secrets.GITHUB_TOKEN }}
2424
issue-message: |
25-
**Welcome to Sendable.ai!**
25+
**Welcome to Sendable!**
2626
2727
Thank you for opening your first issue!
2828
@@ -41,7 +41,7 @@ jobs:
4141
with:
4242
repo-token: ${{ secrets.GITHUB_TOKEN }}
4343
pr-message: |
44-
**Welcome to Sendable.ai!**
44+
**Welcome to Sendable!**
4545
4646
Thank you for opening your first pull request!
4747

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Contributing to Sendable.ai
1+
# Contributing to Sendable
22

3-
First off, thank you for considering contributing to Sendable.ai! 🎉
3+
First off, thank you for considering contributing to Sendable! 🎉
44

55
The following is a set of guidelines for contributing to this project. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
66

@@ -548,7 +548,7 @@ If you have questions:
548548

549549
## Thank You!
550550

551-
Your contributions make Sendable.ai better for everyone. We appreciate your time and effort!
551+
Your contributions make Sendable better for everyone. We appreciate your time and effort!
552552

553553
---
554554

0 commit comments

Comments
 (0)