CsOverflow

Q/A forum for Computer Science and Engineering students.

14
1
TypeScript

Logo

Q/A forum for Computer Science & Engineering students.

github actions Codacy Badge License: MIT Heroku

View Demo · Report Bug · Request Feature

Ask a question, contribute an answer and upvote your favourite one! CsOverflow gives students correct answer and derivation of all relevant computer science and engineering questions.

⭐ Features

  • Token based secured authentication system
  • Feature enriched Quill Text Editor
  • Ask question by categorizing based on tags and perform CRUD optertions
  • Upvote and contribute answer to question
  • Filter question based on tags and search feature
  • Attractive user Dashboard, and many more…

⚠️ Website isn’t mobile friendly and for best experience use Google Chrome.

💻 Tech Stack

  • Frontend : Typescript, React.js, Redux
  • Styling : Ant Design, Custom Css with BEM naming convention
  • Backend : Typescript, Node.js with Express framework
  • Database : Sequelize ORM with PostgresSQL database
  • Deployment : Server, Client and Database hosted on Heroku

📺 Prerequisites

Before running app locally make sure that you install following things:

  • Nodejs with npm or yarn with following version installed :
    npm >= 6.14.8 or yarn >= 1.22.4 with node >= 12.19.1
  • PostgreSQL >= 13.1 as database.
  • Download & install pgadmin as PostgreSQL client for easier psql database setup.

🚀 Local Development

Step 1: Clone the repo

$ https://github.com/adarshaacharya/csoverflow.git

Step 2: Install dependencies

Install both client and server dependencies


# Install dependencies for server
$ npm install

# Install dependencies for client
$ npm run client:install

Step 3: Configuration

  1. Create .env file in project root dir

    $ touch .env
    
  2. Copy everything from .env.example as paste it in .env

  3. Create database named csoverflow with pgadmin or postgres cli from your terminal. (You don’t have to create tables for database)

  4. Replace the fields likeDB_HOST, DB_USER, etc. with your postgres database setup. Place random word as jsonwebtoken in JWT_SECRET.

  5. Checkout my local configuration in .env.development file and set your config accordingly.

Step 4: Usage

Now you can run the application by :


# Run the client & server with concurrently (for running full application)
$ npm run develop

# Run the Express server only
$ npm run server

# Run the React client only
$ npm run client

# Server runs on http://localhost:5000 and client on http://localhost:3000

⛵ Production Deployment

There is a Heroku post build script so that you do not have to compile your React frontend manually, it is done on the server. Simply push to Heroku and it will build and load the client index.html page

🤝 Contributing

Contributions, issues and feature requests are welcome. After cloning & setting up project locally, you can just submit a PR to this repo and it will be deployed once it’s accepted.
Read CONTRIBUTING.md for complete guide of Contribution

⚠️ Note - Commit & PR Title :

It’s good to have descriptive commit messages so that other folks can make sense of what your commit is doing.
This project uses Husky prevent bad git commit, git push and more 🐶 _woof!

Read conventional commits before making the commit message.

👏🏻 Show your support

Give a ⭐️ if you like the project! 🎉

👤 Author

📝 License

Copyright © 2020 Aadarsha Acharya.

This project is MIT licensed.