A modern startup directory built with Next.js 14, Supabase, and TypeScript. Allows startups to create profiles, share updates, and connect with the community.
- Authentication: Sign up/sign in with email verification
- Startup Profiles: Create and manage startup profiles with logos, descriptions, and social links
- Updates Feed: Share progress updates with markdown support and images
- Public Profiles: Dedicated pages for each startup with their updates
- Responsive Design: Works seamlessly on mobile and desktop
- Dark Mode: Modern dark theme optimized for readability
- Framework: Next.js 14 (App Router)
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Storage: Supabase Storage (for images)
- Styling: Tailwind CSS + shadcn/ui
- Language: TypeScript
- Validation: Zod
- Node.js 18.17+
- A Supabase project
-
Clone the repository
git clone <repo-url> cd startup-directory
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile:NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
-
Set up database Run the SQL migration in your Supabase SQL editor:
# Copy contents of supabase-migration.sql to Supabase SQL Editor -
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
startup-directory/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── auth/ # Authentication pages
│ │ ├── dashboard/ # Protected dashboard pages
│ │ ├── s/[slug]/ # Public startup profiles
│ │ └── page.tsx # Homepage
│ ├── components/ # React components
│ │ ├── auth/ # Authentication components
│ │ ├── dashboard/ # Dashboard components
│ │ └── ui/ # Reusable UI components
│ ├── lib/ # Utilities and configurations
│ │ ├── hooks/ # Custom React hooks
│ │ ├── supabase/ # Supabase client configuration
│ │ ├── types/ # TypeScript type definitions
│ │ ├── utils/ # Utility functions
│ │ └── validations/ # Zod schemas
│ └── middleware.ts # Next.js middleware
├── public/ # Static assets
├── supabase-migration.sql # Database schema
└── package.json
- Clean Architecture: Modular component structure with shared utilities
- Type Safety: Full TypeScript coverage with Zod validation
- Authentication Flow: Complete signup/signin with email verification
- Error Handling: Global error boundary and specific error messages
- Performance: Optimized auth hooks and selective component rendering
- Security: Removed unsafe admin client, proper RLS policies
- Code Quality: Shared styling utilities, consolidated navigation logic
- Row Level Security (RLS) policies
- Secure authentication with Supabase
- Protected dashboard routes
- Input validation with Zod schemas
- Safe file upload handling
The app is ready for deployment on Vercel, Netlify, or any platform supporting Next.js.
For detailed setup instructions, see SETUP.md.