mbeps / next_discussion_platform

Full Stack Website for Forum Discussion Platform using Next.JS and Firebase
https://circus-discussion.vercel.app
MIT License
54 stars 16 forks source link
chakra-ui firebase full-stack nextjs react recoil social-media typescript webdevelopment
cover

Introducing Circus, a simple yet powerful discussion platform that enables users to engage with each other in a variety of ways. Our platform is similar to popular sites like Reddit and Quora, but with a range of unique features that set us apart.

Our platform is designed to promote engagement and collaboration among users, with a wide range of community management features that enable users to create, subscribe to, and interact with communities on a variety of topics. We also provide a range of features to make it easy for users to create and view posts, including options for images, voting, and sharing.

In addition, we provide a robust set of user authentication and account management features, ensuring that our users have a seamless and secure experience. Users can sign up using email and password or third-party authentication providers such as Google and GitHub, log in and out, reset their password, and modify their profiles.

Our platform is also designed to be user-friendly and accessible, with a responsive UI that can be used on smartphones, tablets, or computers. Whether you're an experienced user or just getting started, Circus has everything you need to engage with others and explore new ideas.

Requirements

These are the requirements needed to run the project:

Features

Authentication and Account Management

The system has several key user authentication and account management features designed to ensure that users have a seamless and secure experience:

Community

The system has several key community management features designed to promote engagement and collaboration among users:

Posts

The system has several key features designed to make it easy for users to create and view posts within communities:

Comments

The web application has several key features designed to make it easy for users to engage with others by creating and viewing comments:

General

The system has several general features to make the site user-friendly and accessible:

Stack

These are the main technologies that were used in this project:

Front-End

Back-End

Running Application Locally

These are simple steps to run the application locally. For more detail instructions, refer to the Wiki.

1. Clone the Project Locally

git clone https://github.com/mbeps/next_discussion_platform.git

2. Set Up Environment

  1. Copy the .env.example file and call it .env.local
  2. Populate the .env.local with the required Firebase secrets

3. Set Up Firebase

Set Up Cloud Functions

  1. Install Firebase tools

    npm install -g firebase-tools
  2. Initialise Firebase project

    firebase init
  3. Deploy cloud functions

    firebase deploy --only functions

Set Up Firestore Indexing

Set the following indexes in the Firestore Database under the Indexes section. These are required for querying.

Collection ID Fields Indexed
posts communityId Ascending createdAt Descending name Descending
comments postId Ascending createdAt Descending name Descending

3. Run Project

npm run dev

This should run the project on localhost:3000

Running via Docker

You can build and run the application through Docker. This requires the .env.local file to be completed, refer to installation instructions in the Wiki for setting it up.

Once everything is ready, use the command bellow to run the application.

docker-compose -f docker/docker-compose.yml up --build

Demo

This video demonstrates the features and functionality of the project.

https://user-images.githubusercontent.com/58662575/236821702-25dfb59c-162f-4de5-af8f-e0e7b8315aae.mp4