feat: Souq native integration + auth simplification + CE-wide enhancements

Souq Marketplace:
- Native souq pages: browse+filters, create listing, detail+seller profile, orders+chat
- New API: reviews (POST), sellers/[id], upload (multipart), polar-checkout webhook
- Listings API enhanced: minPrice, maxPrice, sortBy, deliveryDays filters
- Seller workflow: start order, mark delivered, upload files, confirm delivery
- Wallet: 5 Polar.sh FLH tiers, production checkout, mock fallback, success banner
- Fix: order redirect /souq/history → /souq/orders

Auth System:
- Unified auth page, removed OAuth provider routing (2 files deleted)
- Deleted oauth.ts (319 lines) — simplified auth chain
- Streamlined login/register API routes

Prisma Schema (+179 lines):
- New models: Listing, Purchase, Review, Group/GroupMember
- Gamification: DailyStreak, XpTransaction, Achievement, UserLevel
- Learning: LearnCourse/Module/Enrollment/Certificate
- Notifications, Referrals, Dhikr, PremiumBenefits

Deleted legacy code:
- src/app/api/marketplace/* (3 files) — replaced by /api/souq/*
- src/app/api/files/[listingId]/route.ts — replaced by /api/souq/upload
- src/app/api/seller/[sellerId]/route.ts — replaced by /api/souq/sellers/[id]

Infrastructure:
- Dockerfile: standalone output, Prisma runtime migration
- docker-compose.yml: Polar env vars, healthcheck fix
- docker-compose.staging.yml: staging on port 4014
- .gitea/workflows/ci.yml: CI pipeline
This commit is contained in:
root
2026-06-24 07:02:03 +02:00
parent 913fa94fb9
commit cfff74e2db
81 changed files with 12132 additions and 2101 deletions
+156
View File
@@ -0,0 +1,156 @@
#!/usr/bin/env bash
# init-gitea-courses.sh — Create the courses repo in Gitea and push initial content
# Run this when Gitea is available.
# Usage: GITEA_TOKEN=xxx bash scripts/init-gitea-courses.sh
set -euo pipefail
GITEA_URL="${GITEA_URL:-https://git.falahos.my}"
GITEA_TOKEN="${GITEA_TOKEN:?GITEA_TOKEN is required}"
REPO_OWNER="maifors"
REPO_NAME="courses"
WORKDIR="/tmp/courses-repo"
echo "=== Initializing Courses Repo ==="
# Create repo via Gitea API
echo "Creating repo $REPO_OWNER/$REPO_NAME..."
curl -s -X POST "$GITEA_URL/api/v1/admin/users/$REPO_OWNER/repos" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$REPO_NAME\", \"description\": \"Falah Academy micro learning course content\", \"private\": false, \"auto_init\": false}" \
|| echo "Repo may already exist, continuing..."
# Clone or create local working directory
rm -rf "$WORKDIR"
mkdir -p "$WORKDIR"
cd "$WORKDIR"
git init
git config user.name "Falah Academy Bot"
git config user.email "academy@falahos.my"
# ─── Course Index ───
mkdir -p courses
cat > courses/course-index.yaml << 'INDEXEOF'
courses:
- slug: "atomic-habits"
title: "Atomic Habits"
author: "James Clear"
- slug: "deep-work"
title: "Deep Work"
author: "Cal Newport"
- slug: "7-habits"
title: "The 7 Habits of Highly Effective People"
author: "Stephen R. Covey"
INDEXEOF
# ─── Atomic Habits Course ───
COURSE="courses/atomic-habits"
mkdir -p "$COURSE"
cat > "$COURSE/course.yaml" << 'COURSEEOF'
slug: "atomic-habits"
title: "Atomic Habits"
author: "James Clear"
description: "Master the science of habit formation in just 25 minutes."
imageUrl: ""
moduleCount: 5
totalMinutes: 25
difficulty: "beginner"
priceFlh: 499
priceUsd: 4.99
subscriptionOnly: false
published: true
modules:
- slug: "the-1-percent-rule"
order: 1
- slug: "identity-based-habits"
order: 2
- slug: "the-4-laws"
order: 3
- slug: "habit-stacking"
order: 4
- slug: "design-your-environment"
order: 5
COURSEEOF
# Module 1: The 1% Rule
MODULE="$COURSE/the-1-percent-rule"
mkdir -p "$MODULE"
cat > "$MODULE/module.yaml" << 'YAMLEOF'
title: "The 1% Rule"
order: 1
keyTakeaway: "Small habits don't just add up — they compound. Improving just 1% every day leads to being 37x better after one year."
duration: 5
YAMLEOF
cat > "$MODULE/lesson.md" << 'MDEOF'
# The 1% Rule
Habits are the compound interest of self-improvement. The same way that money multiplies through compound interest, the effects of your habits multiply as you repeat them.
## The Math of Small Changes
If you get 1% better each day for one year, you'll end up 37 times better. Conversely, getting 1% worse each day for a year will decline you nearly to zero.
Success is the product of daily habits — not once-in-a-lifetime transformations.
MDEOF
cat > "$MODULE/quiz.yaml" << 'QUIZEOF'
questions:
- question: "If you get 1% better every day, how much better after one year?"
options:
- "About 3x better"
- "About 37x better"
- "About 10x better"
- "About 100x better"
correctIndex: 1
- question: "What is the 'Valley of Disappointment'?"
options:
- "A period where habits feel boring"
- "The phase where you work but see no results"
- "The time between starting a new habit"
- "When you lose motivation completely"
correctIndex: 1
QUIZEOF
# Module 5: Design Your Environment
MODULE="$COURSE/design-your-environment"
mkdir -p "$MODULE"
cat > "$MODULE/module.yaml" << 'YAMLEOF'
title: "Design Your Environment"
order: 5
keyTakeaway: "Your surroundings shape your behavior more than willpower. Design your environment for success by reducing friction for good habits."
duration: 5
YAMLEOF
cat > "$MODULE/lesson.md" << 'MDEOF'
# Design Your Environment
Willpower is overrated. The most reliable way to stick to good habits is to design your environment so that the right choice is the easy choice.
MDEOF
cat > "$MODULE/quiz.yaml" << 'QUIZEOF'
questions:
- question: "What is a commitment device?"
options:
- "A promise to yourself"
- "A present choice that locks in better future behavior"
- "A device that tracks habits"
- "An accountability partner"
correctIndex: 1
QUIZEOF
# ─── Commit & Push ───
git add -A
git commit -m "feat: initial course content - Atomic Habits"
git remote add origin "$GITEA_URL/$REPO_OWNER/$REPO_NAME.git"
git branch -M main
git push -u origin main
echo ""
echo "=== Done! Repo: $GITEA_URL/$REPO_OWNER/$REPO_NAME ==="
echo "Configure Gitea webhook to POST to https://falahos.my/api/learn/sync"
echo " with secret matching SYNC_SECRET env var."