Skip to content

Landing page, design system, Supabase backend, hero video, Navbar/Footer#142

Open
akiwumi wants to merge 28 commits intoTechnigo:mainfrom
akiwumi:main
Open

Landing page, design system, Supabase backend, hero video, Navbar/Footer#142
akiwumi wants to merge 28 commits intoTechnigo:mainfrom
akiwumi:main

Conversation

@akiwumi
Copy link

@akiwumi akiwumi commented Feb 23, 2026

first push

akiwumi and others added 28 commits February 23, 2026 18:40
…header

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…cts)

Co-authored-by: Cursor <cursoragent@cursor.com>
New color palette (warm gold accent, deep near-black, parchment bg), Playfair Display serif headings, DM Sans body, pill-shaped buttons across all sections. Adds eyebrow labels, left-gold-border card accents, and refined typography hierarchy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- EntrepreneurRegister: full registration form with company details, validation, confirmation email state
- Welcome: email-confirmed T&C page (9 sections, accordion, 80/20 refund policy)
- EntrepreneurProfile: avatar upload, bio, company presentation, read-only registration details
- SubmitProject: project form with 21 business categories, PDF drag-and-drop upload (max 50 MB)
- Payment: €1,000 payment page, working-day calendar, 30-min GMT time slots, card form
- EntrepreneurDashboard: stats, submission tracker with status badges, admin chat panel
- ProjectFeed: LinkedIn/Kickstarter-style discovery feed with search, category and stage filters
- EntrepreneurSidebar: shared dark sidebar navigation component
- App.jsx: all new routes wired; ChooseRole entrepreneur CTA updated to /register

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Step-by-step instructions covering: Supabase tables (entrepreneurs, projects,
payments, messages, project_interests), RLS policies, storage buckets, auth
email confirmation setup, frontend Supabase client, and per-page wiring for
Register, Welcome, Profile, SubmitProject, Payment, Dashboard, and ProjectFeed.
Includes Stripe PaymentIntent + webhook routes, signed PDF downloads, and
deployment checklist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each page includes a dark hero with headline and CTA, image placeholders
throughout, rich body content relevant to Connect Africa, and a bottom CTA
section. Advice page includes a newsletter signup block and filterable
article grid. Testimonials page includes video placeholders and case study
sections. Why Us includes a problem/solution grid and comparison table.
How It Works has a per-role step-by-step layout with alternating image panels.
Navbar links updated from anchor hashes to proper routes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full rewrite covering: all routes (public + entrepreneur flow), project
structure with every new file, submission flow diagram, environment
variables for both backend and frontend, design system tokens, and
links to BACKEND_WIRING.md, DESIGN_SYSTEM.md, and Build_Guide.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ct, Welcome; frontend Supabase client; backend server updates

Made-with: Cursor
- Replace all <a> tags in Navbar, HeroVideo, Login, Register with
  React Router <Link> to prevent full-page reloads in the SPA
- Add a prominent Register button in the navbar pointing to /login
- Make the register CTA on the Login page a full-width button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This was causing the Vercel build to fail, leaving the deployed app
on an outdated version without the /login route.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
createClient throws if passed undefined, crashing the entire app and
breaking all routes. Fall back to placeholder values so the app loads
even without env vars configured (auth calls will fail gracefully).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ial — validate before signUp()

Made-with: Cursor
Shows real-time feedback (green check / grey dot) for each rule
as the user types: length, uppercase, lowercase, number, special char.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Avatar upload now stops and displays the error message if the storage
upload fails (e.g. missing bucket or RLS policy), instead of silently
continuing with no photo saved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace .single() with .maybeSingle() to avoid 406 when no profile row exists
- Remove unused Users import from lucide-react

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace getUser() (network request) with getSession() (local storage) so
profile data loads reliably even after WebSocket suspension.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nsert

When Supabase email confirmation is enabled, signUp() returns no session,
so the RLS policy blocks the entrepreneurs INSERT in Register.jsx silently.
This leaves the user authenticated but without an entrepreneurs row, causing
a FK violation (409) when inserting into projects.

Fix: store form data in localStorage at registration, then retry the
entrepreneurs INSERT in Welcome.jsx once the user is authenticated
(after clicking the email confirmation link).

Also updates README: add /login route, correct vercel.json path to
frontend/vercel.json (root one was removed in a previous commit).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add type:module and strip babel/mongoose from backend
- Tighten CORS to FRONTEND_URL origin
- Add render.yaml for Render deployment blueprint

Made-with: Cursor
- Strip Stripe import, payment intent and webhook routes from backend
- Remove @stripe/stripe-js and stripe dependencies
- Rewrite Payment page as verification-only scheduler (no card payment)
- Update SubmitProject flow: pending_verification status, no fee references
- Update Dashboard status config to match new pending_verification state
- Remove Stripe env vars from render.yaml

Made-with: Cursor
- Remove MOCK_PROJECTS, MOCK_SUBMISSIONS, MOCK_MESSAGES (replaced by Supabase)
- Wire Dashboard to use real submissions state instead of mock data
- Remove unused CATEGORIES_ICONS and Rocket from Advice.jsx
- Remove unused useNavigate from Register.jsx
- Remove extraneous suffix from StatsSection useEffect deps
- Delete unused CTASection component
- Delete dead .babelrc (Babel not used)
- Remove boilerplate placeholder route from server.js

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant