Loading repository data…
Loading repository data…
MaenAbabneh / repository
A full-stack, community-driven Q&A platform for developers, built with Next.js, React, and MongoDB. Inspired by Stack Overflow with modern features.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Creative Overflow is a full-featured, community-driven Q&A platform built with modern web technologies. It provides a space for developers and tech enthusiasts to ask questions, share knowledge, and collaborate. The platform includes advanced features like AI-generated answers, a job board, and a robust reputation system, all wrapped in a sleek, responsive interface.
lib/actions/qustion.action.ts, lib/actions/answer.action.tsauth.ts, app/(auth)/, components/forms/authform.tsxdatabase/vote.model.ts, components/votes/lib/actions/ai.action.ts, app/api/ai/components/editor/editor.tsxcomponents/search/globale-search.tsx, lib/actions/global.action.tsdatabase/collection.model.ts, app/(main)/collection/database/tags.model.ts, app/(main)/tags/app/(main)/jobs/, lib/actions/job.action.tsapp/(main)/profile/[id]/, lib/actions/user.action.tscomponents/pagination.tsxlib/actions/interaction.action.ts (inferred)creative-overflow/
├── app/
│ ├── (auth)/ # Route group for authentication pages
│ ├── (main)/ # Route group for main app pages
│ ├── api/ # API routes
│ └── layout.tsx # Root layout
├── components/
│ ├── card/ # Reusable card components
│ ├── forms/ # Form components (login, question, etc.)
│ ├── navigation/ # Navbar, sidebars
│ └── ui/ # ShadCN/UI components
├── constants/ # Application-wide constants
├── context/ # React context providers (e.g., Theme)
├── database/ # Mongoose schema models
├── lib/
│ ├── actions/ # Server Actions for data fetching and mutations
│ ├── handler/ # Reusable handlers for actions and errors
│ └── mongoose.ts # MongoDB connection logic
├── public/ # Static assets (images, icons)
├── types/ # TypeScript type definitions
└── package.json # Project dependencies and scripts
auth.ts file configures providers (Credentials, Google, GitHub) and callbacks.unstable_cacheTag, revalidateTag) within Server Actions to optimize data fetching and revalidate data on-demand after mutations./api/ai/answers) which securely calls the Google AI SDK on the server side.POST /api/ai/answers: Generates an AI-powered answer for a question.GET /api/auth/[...nextauth]: Handles all NextAuth.js authentication routes./: Home page, displays all questions./ask-question: Form to create a new question./collection: Displays questions saved by the user./community: Lists all users of the platform./jobs: A job board with search and filtering./profile/[id]: Public user profile page./questions/[id]: Detailed view of a single question and its answers./tags: Lists all tags used on the platform./tags/[id]: Shows all questions associated with a specific tag.components/card/question-card.tsx: Displays a question summary.components/forms/questionform.tsx: The form for creating/editing questions.components/editor/editor.tsx: The rich text Markdown editor.components/search/globale-search.tsx: The main search bar component.components/navigation/navbar/navbar.tsx: The top navigation bar.components/navigation/leftsidebar/left-sidebar.tsx: The main sidebar for navigation.Create a .env.local file in the root of the project and add the following variables.
# NextAuth.js
# Generate a secret with `openssl rand -base64 32`
AUTH_SECRET=
AUTH_URL=http://localhost:3000
# OAuth Providers (get these from Google/GitHub developer consoles)
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
# MongoDB
MONGODB_URI=mongodb+srv://<user>:<password>@<cluster-url>/<db-name>?retryWrites=true&w=majority
# Google AI (for AI-powered answers)
GOOGLE_API_KEY=
# JSearch API (for the job board)
NEXT_PUBLIC_RAPID_API_KEY=
# Optional: Pino Logger Level
LOG_LEVEL=info
Follow these steps to get the project up and running locally.
1. Prerequisites:
2. Clone the Repository:
git clone https://github.com/MaenAbabneh/creativeflow.git
cd creative-overflow
3. Install Dependencies:
npm install
4. Set Up Environment Variables:
.env.local.example contents from above into a new file named .env.local.5. Run the Development Server:
npm run dev
The application will be available at http://localhost:3000.
6. Build for Production:
npm run build
npm start
.env.local file are added to your Vercel project's settings.Contributions are welcome! Please follow these guidelines:
git checkout -b feature/your-feature-name).npm run lint to check for code style issues.main branch of the original repository.This project is licensed under the MIT License.
MIT License
Copyright (c) 2024 Maen Ababneh
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE