A modern platform where entrepreneurs showcase their startup ideas, connect with innovators, and build a thriving community
Features β’ Demo β’ Tech Stack β’ Screenshots β’ Getting Started
β Star this repo if you find it useful!
- Submit Pitches: Submit your startup ideas with rich markdown editor, images, and categories
- Browse & Discover: Explore innovative pitches with powerful search and category filtering
- View Analytics: Track engagement with view counters for each pitch
- Editor Picks: Admins can highlight top startup ideas via Sanity Studio
- Category Filtering: Browse pitches by categories (AI, Fintech, Healthcare, etc.)
- Markdown Support: Rich text editing with markdown preview and syntax highlighting
- Image Upload: Add images or video links to showcase your startup
- Real-time Updates: Live content synchronization using Sanity Live
- Edit & Delete: Manage your pitches with edit and delete functionality
- User Profiles: Personal profile pages showcasing all your submitted pitches
- GitHub Authentication: Seamless login experience using GitHub OAuth
- Search Functionality: Powerful search to find and filter pitches efficiently
- Responsive Design: Perfect experience on mobile, tablet, and desktop
- Modern UI: Glassmorphism design with gradient effects and smooth animations
- Glassmorphism UI: Modern frosted glass effect design
- Gradient Hero Sections: Eye-catching gradient backgrounds with animations
- Smooth Animations: Fade-in and slide-up animations for better UX
- Responsive Cards: Beautiful startup cards with hover effects
- Dark/Light Theme Ready: Flexible color system for future theme support
- Type Safety: Full TypeScript support with Sanity type generation
- Error Monitoring: Sentry integration for production error tracking
- Server Components: Next.js 15 App Router with React Server Components
- API Routes: RESTful API endpoints for authentication and data fetching
- Optimized Performance: Code splitting, lazy loading, and optimized bundle size
- Framework: Next.js 15 (App Router)
- UI Library: React 19
- Styling: Tailwind CSS 3.4
- CMS: Sanity (Headless CMS)
- Authentication: NextAuth 5.0 with GitHub OAuth
- Markdown: react-markdown + @uiw/react-md-editor
- UI Components: ShadCN UI + Radix UI
- Icons: lucide-react
- Type Safety: TypeScript 5
- Error Monitoring: Sentry
Live Demo: Visit the application
Note: Make sure to set up all environment variables for the demo to work properly.
This application is built with a modern, scalable architecture:
- Frontend: Next.js 15 with App Router, React 19 Server Components, TypeScript
- Backend: Next.js API Routes (serverless functions)
- CMS: Sanity Headless CMS with Live Content API
- Authentication: NextAuth 5.0 with GitHub OAuth provider
- State Management: React Hooks + Server Components
- Styling: Tailwind CSS with custom design system
- Error Tracking: Sentry for production monitoring
Make sure you have the following installed:
- Clone the repository
git clone https://github.com/emreyn1/pitchupyourstartup.git
cd pitchupyourstartup- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
# Sanity CMS
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id
NEXT_PUBLIC_SANITY_DATASET=production
NEXT_PUBLIC_SANITY_API_VERSION=2024-10-14
SANITY_TOKEN=your_sanity_token
# NextAuth
AUTH_SECRET=your_auth_secret
AUTH_GITHUB_ID=your_github_client_id
AUTH_GITHUB_SECRET=your_github_client_secret
# Sentry (Optional)
NEXT_PUBLIC_SENTRY_DSN=your_sentry_dsn
SENTRY_ORG=your_sentry_org
SENTRY_PROJECT=your_sentry_project
SENTRY_AUTH_TOKEN=your_sentry_auth_token- Set up Sanity
# Login to Sanity
npx sanity login
# Deploy Sanity Studio
npx sanity deploy- Run the development server
npm run devOpen http://localhost:3000 in your browser to view the application.
For detailed instructions on setting up each service:
- Visit the Application: Open the live demo or run locally
- Sign In: Click "Sign In with GitHub" to authenticate
- Browse Pitches: Explore existing startup pitches on the homepage
- Search: Use the search bar to find specific pitches
- Submit Pitch: Click "Create Pitch" to submit your startup idea
- View Profile: Click on your profile to see all your submitted pitches
- Submit Pitches: Create detailed pitches with markdown editor, images, and categories
- Browse & Filter: Explore pitches by category or search for specific keywords
- User Profiles: View all pitches submitted by any user
- Real-time Updates: See new pitches as they're submitted (Sanity Live)
- Editor Picks: Admins can highlight top pitches via Sanity Studio
- View Tracking: Each pitch tracks views to measure engagement
- Fast Loading: Optimized bundle size, code splitting, lazy loading
- Server Components: React Server Components for better performance
- Image Optimization: Next.js Image component for optimized images
- Real-time Updates: Efficient live content updates with Sanity Live
- Type Safety: Full TypeScript support for reliability
- Error Handling: Comprehensive error handling with Sentry integration
- β GitHub OAuth: Secure authentication with GitHub OAuth 2.0
- β Input Validation: Form validation and sanitization
- β Error Handling: Comprehensive error handling with user-friendly messages
- β Type Safety: Full TypeScript support for type-safe development
- β Environment Variables: Secure handling of sensitive data
- β Error Monitoring: Sentry integration for production error tracking
pitchupyourstartup/
βββ app/ # Next.js App Router
β βββ (root)/ # Main route group
β β βββ page.tsx # Homepage
β β βββ startup/ # Startup routes
β β β βββ [id]/ # Dynamic startup detail page
β β β βββ create/ # Create pitch page
β β βββ user/ # User routes
β β βββ [id]/ # User profile page
β βββ api/ # API routes
β β βββ auth/ # NextAuth API routes
β βββ layout.tsx # Root layout
β βββ globals.css # Global styles
βββ components/ # React components
β βββ ui/ # ShadCN UI components
β βββ Navbar.tsx # Navigation bar
β βββ StartupCard.tsx # Startup card component
β βββ StartupForm.tsx # Pitch submission form
β βββ SearchForm.tsx # Search functionality
β βββ UserStartups.tsx # User pitches list
βββ lib/ # Utility functions
β βββ actions.ts # Server actions
β βββ utils.ts # Helper functions
β βββ validation.ts # Form validation
βββ sanity/ # Sanity CMS configuration
β βββ schemaTypes/ # Content schemas
β β βββ startup.ts # Startup schema
β β βββ author.ts # Author schema
β β βββ index.ts # Schema exports
β βββ lib/ # Sanity utilities
β β βββ client.ts # Sanity client
β β βββ queries.ts # GROQ queries
β β βββ live.ts # Live content updates
β βββ structure.ts # Studio structure
βββ hooks/ # Custom React hooks
β βββ use-toast.ts # Toast notifications
βββ public/ # Static assets
β βββ logo.png # Project logo
βββ auth.ts # NextAuth configuration
βββ next.config.ts # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
# Development server
npm run dev
# Production build
npm run build
# Start production server
npm start
# Lint code
npm run lint
# Generate Sanity types
npm run typegenSanity types are automatically generated before build:
npm run typegenThis generates TypeScript types from your Sanity schemas in sanity/types.ts.
The easiest way to deploy this Next.js app is using Vercel:
- Push your code to GitHub
git add .
git commit -m "Ready for deployment"
git push origin main-
Import to Vercel
- Go to Vercel Dashboard
- Click "Add New Project"
- Import your GitHub repository
- Configure project settings:
- Framework Preset: Next.js
- Build Command:
npm run build - Output Directory: (leave empty)
-
Add Environment Variables
- Add all environment variables from your
.env.localfile - Make sure to add them for all environments (Production, Preview, Development)
- Add all environment variables from your
-
Deploy!
- Click "Deploy"
- Wait for the build to complete
- Your app will be live at
https://your-project.vercel.app
For detailed Vercel deployment instructions:
- Sanity CMS: Content is managed via Sanity Studio. Make sure to deploy Sanity Studio separately.
- GitHub OAuth: You need to create a GitHub OAuth App and configure callback URLs for each domain.
- Environment Variables: All environment variables must be set for the application to work properly.
- Type Generation: Sanity types are generated automatically before build. Run
npm run typegenmanually if needed.
- β GitHub OAuth: Secure authentication with GitHub OAuth 2.0
- β No Tracking: No analytics or tracking by default
- β Secure Storage: Environment variables stored securely
- β Input Validation: Form validation and sanitization
- β Error Monitoring: Sentry integration for production error tracking (optional)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
Built with amazing open-source technologies:
- Next.js - The React Framework
- Sanity - Headless CMS
- React - UI Library
- Tailwind CSS - Styling Framework
- TypeScript - Type Safety
- ShadCN UI - UI Components
- NextAuth - Authentication
Star this repo to show your support! β
Built with β€οΈ using Next.js, React, and TypeScript
Features β’ Demo β’ Getting Started β’ License
