A modern idea-sharing platform where creativity meets collaboration. Share your thoughts, discover innovative ideas, and connect with like-minded creators in a beautifully designed interface.
- π Secure Authentication - Powered by Clerk for seamless user management
- π Idea Sharing - Create and share your innovative ideas with the community
- π€ User Profiles - Personalized profiles with onboarding experience
- π¬ Comments & Discussions - Engage with others through threaded conversations
- π± Responsive Design - Beautiful UI that works on all devices
- π¨ Modern Interface - Clean design with TailwindCSS and shadcn/ui components
- π File Uploads - Share images and files with your ideas using UploadThing
- π Real-time Updates - Stay connected with live content updates
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: TailwindCSS + shadcn/ui
- Authentication: Clerk
- Database: MongoDB with Mongoose
- File Uploads: UploadThing
- Form Handling: React Hook Form + Zod
- Icons: Lucide React
- Node.js 18.17 or later
- npm, yarn, or pnpm
- MongoDB database
- Clerk account for authentication
-
Clone the repository
git clone https://github.com/Sagargupta16/brainstorm-verse.git cd brainstorm-verse -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# Clerk Authentication NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key # Database MONGODB_URL=your_mongodb_connection_string # UploadThing UPLOADTHING_SECRET=your_uploadthing_secret UPLOADTHING_APP_ID=your_uploadthing_app_id
-
Run the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser
Navigate to http://localhost:3000 to see the application.
brainstorm-verse/
βββ app/
β βββ (auth)/ # Authentication routes
β β βββ onboarding/
β β βββ sign-in/
β β βββ sign-up/
β βββ (root)/ # Main application routes
β β βββ create-idea/
β β βββ page.tsx
β βββ api/ # API routes
βββ components/
β βββ cards/ # Reusable card components
β βββ forms/ # Form components
β βββ shared/ # Shared layout components
β βββ ui/ # shadcn/ui components
βββ lib/
β βββ actions/ # Server actions
β βββ models/ # Database models
β βββ validations/ # Zod schemas
β βββ utils/ # Utility functions
βββ public/ # Static assets
- Sign Up/Sign In: Create an account or log in using Clerk authentication
- Complete Onboarding: Set up your profile with basic information
- Create Ideas: Share your thoughts and innovations with the community
- Explore: Browse ideas from other users and engage through comments
- Profile Management: Update your profile and view your activity
npm run dev- Start development servernpm run build- Build the application for productionnpm run start- Start the production servernpm run lint- Run ESLint for code qualitynpm run format- Format code with Prettier
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- 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 licensed under the MIT License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Clerk for seamless authentication
- shadcn/ui for beautiful UI components
- TailwindCSS for utility-first CSS
- All the amazing open-source libraries that make this project possible
If you have any questions or need help, please open an issue on GitHub or reach out to the maintainers.
This section contains detailed setup instructions for developers who want to build this project from scratch or understand the development process.
If you want to recreate this project from scratch:
npx create-next-app@latest ./Configuration Options:
- TypeScript: Yes
- TailwindCSS: Yes
- App Router: Yes
npm install @clerk/nextjs @uploadthing/react mongoose svix uploadthingKey Dependencies Explained:
- @clerk/nextjs: Developer-first identity and user management system providing complete authentication, authorization, and user profiles
- uploadthing: File upload service with simple API and React components for handling user file uploads
- mongoose: MongoDB object modeling tool designed for asynchronous environments with promise and callback support
- svix: Service for sending webhooks with simple API and React components
Install additional UI dependencies:
npm install tailwindcss-animateSetup Steps:
- Customize
app/globals.cssaccording to your design needs - Configure
tailwind.config.jsfor your styling requirements - Clean up default content in
app/page.tsx
Route Groups Configuration:
-
Auth Routes: Authentication-related pages
- Sign-in, Sign-up, Onboarding pages
- Uses Next.js route groups
(auth)
-
Root Routes: Main application pages
- Home, Create Idea, and other core features
- Uses Next.js route groups
(root)
Clerk Route Structure: Create the following folder structure for Clerk authentication:
app/
βββ (auth)/
βββ sign-in/
β βββ [[...sign-in]]/
β βββ page.tsx
βββ sign-up/
βββ [[...sign-up]]/
βββ page.tsx
- Create Clerk Account: Sign up at clerk.com
- Create New Project: Set up your application in Clerk dashboard
- Environment Variables: Add to
.env.local:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CLERK_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx- Follow Documentation: Complete setup using Clerk's Next.js documentation
For detailed UploadThing setup, refer to this comprehensive tutorial: UploadThing Setup Tutorial (timestamp: 3:13:58 / 5:50:34)
Key Setup Steps:
- Create UploadThing account
- Configure API keys in environment variables
- Set up file upload endpoints
- Integrate upload components in your forms
Made with β€οΈ by Sagar Gupta