- Team Name: Phoenix
- Team Members & Emails:
- Nishant Makwana (Leader) - [email protected]
- Kevin Italiya - [email protected]
- Divya Maheta - [email protected]
StackIt is a minimal question-and-answer platform that supports collaborative learning and structured knowledge sharing. It's designed to be simple, user-friendly, and focused on the core experience of asking and answering questions within a community.
- View all questions and answers
- Register and log in
- Post questions and answers
- Vote on content
- Moderate content
- Full platform oversight
Users can submit new questions with:
- Title – Short and descriptive
- Description – Written using a rich text editor
- Tags – Multi-select input (e.g., React, JWT)
The description editor should support:
- Bold, Italic, Strikethrough
- Numbered lists, Bullet points
- Emoji insertion
- Hyperlink insertion (URL)
- Image upload
- Text alignment – Left, Center, Right
- Users can post answers to any question
- Answers can be formatted using the same rich text editor
- Only logged-in users can post answers
- Users can upvote or downvote answers
- Question owners can mark one answer as accepted
- Questions must include relevant tags
- A notification icon (bell) appears in the top navigation bar
- Users are notified when:
- Someone answers their question
- Someone comments on their answer
- Someone mentions them using
@username
- The icon shows the number of unread notifications
- Clicking the icon opens a dropdown with recent notifications
Explore the live demonstration of the project: nextjs14-forum
Phoenix is an intricate Next.js 14 application that functions as a comprehensive Q&A platform designed for developers. It enables users to pose questions, disseminate knowledge, and engage in collaborative learning.
Folder Structure
forum/
├── app/
├ ├── favicon.ico
├ ├── globals.css
├ ├── layout.tsx
├ ├── (auth)/
├ ├ ├── onboarding/
├ ├ ├ └── page.tsx
├ ├ ├── sign-in/[[...sign-in]]/
├ ├ ├ └── page.tsx
├ ├ ├── sign-up/[[...sign-up]]/
├ ├ ├ └── page.tsx
├ ├ └── layout.tsx
├ ├── (root)/
├ ├ ├── layout.tsx
├ ├ ├── (home)/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── ask-question/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── collection/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── community/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── edit-answer/
├ ├ ├ └── [id]/
├ ├ ├ └── page.tsx
├ ├ ├── jobs/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── profile/
├ ├ ├ ├── [id]/
├ ├ ├ ├ ├── loading.tsx
├ ├ ├ ├ └── page.tsx
├ ├ ├ └── edit/
├ ├ ├ └── page.tsx
├ ├ ├── question/
├ ├ ├ ├── [id]/
├ ├ ├ ├── loading.tsx
├ ├ ├ ├ └── page.tsx
├ ├ ├ └── edit/
├ ├ ├ └── [id]/
├ ├ ├ └── page.tsx
├ ├ └── tags/
├ ├ ├── [id]/
├ ├ ├ ├── loading.tsx
├ ├ ├ └── page.tsx
├ ├ ├── page.tsx
├ ├ └── loading.tsx
├ └── api/
├ ├── openai/
├ ├ └── route.ts
├ ├── rapidapi/
├ ├ └── route.ts
├ └── clerk/
├ └── route.ts
├── components/
├ ├── cards/
├ ├ ├── Answer.tsx
├ ├ ├── JobWrapper.tsx
├ ├ ├── Question.tsx
├ ├ └── User.tsx
├ ├── forms/
├ ├ ├── Answer.tsx
├ ├ ├── Profile.tsx
├ ├ └── Question.tsx
├ ├── home/
├ ├ └── Filters.tsx
├ ├── jobs/
├ ├ └── JobsFilter.tsx
├ ├── shared/
├ ├ ├── AllAnswers.tsx
├ ├ ├── AnswersTab.tsx
├ ├ ├── EditDeleteAction.tsx
├ ├ ├── Filter.tsx
├ ├ ├── Filters.tsx
├ ├ ├── Leftsidebar.tsx
├ ├ ├── Metric.tsx
├ ├ ├── NoResult.tsx
├ ├ ├── Pagination.tsx
├ ├ ├── ParseHTML.tsx
├ ├ ├── ProfileLink.tsx
├ ├ ├── QuestionsTab.tsx
├ ├ ├── RenderTag.tsx
├ ├ ├── Rightsidebar.tsx
├ ├ ├── Stats.tsx
├ ├ ├── Switcher.tsx
├ ├ ├── Votes.tsx
├ ├ ├── navbar/
├ ├ ├ ├── Navbar.tsx
├ ├ ├ ├── Mobile.tsx
├ ├ ├ └── Theme.tsx
├ ├ └── search/
├ ├ ├── GlobalFilters.tsx
├ ├ ├── GlobalResult.tsx
├ ├ ├── GlobalSearch.tsx
├ ├ └── LocalSearchbar.tsx
├ └── ui/ (generated by shadcn-ui)
├ ├── badge.tsx
├ ├── button.tsx
├ ├── form.tsx
├ ├── input.tsx
├ ├── label.tsx
├ ├── menubar.tsx
├ ├── select.tsx
├ ├── sheet.tsx
├ ├── skeleton.tsx
├ ├── switch.tsx
├ ├── tabs.tsx
├ ├── textarea.tsx
├ ├── toast.tsx
├ ├── toaster.tsx
├ └── use-toast.ts
├── constants/
├ ├── filters.ts
├ └── index.ts
├── context/
├ └── ThemeProvider.ts
├── models/
├ ├── answer.ts
├ ├── interaction.ts
├ ├── question.ts
├ ├── tag.ts
├ └── user.ts
├── lib/
├ ├── mongoose.ts
├ ├── utils.ts
├ ├── validations.ts
├ └── actions/
├ ├── answer.action.ts
├ ├── general.action.ts
├ ├── interaction.action.ts
├ ├── job.action.ts
├ ├── question.action.ts
├ ├── tag.action.ts
├ └── user.action.ts
├── public/
├ ├── next.svg
├ ├── vercel.svg
├ └── assets/
├ ├── icons/[[...]].svg
├ └── images/[[...]].{svg,png}
├── styles/
├ ├── prism.css
├ └── theme.css
├── types/
├ ├── index.d.ts
├ └── shared.d.ts
├── .eslintrc.json
├── .gitignore
├── README.md
├── components.json
├── middleware.ts
├── next.config.js
├── package.json
├── postcss.config.js
├── tailwind.config.ts
└── tsconfig.ts