GithubHelp home page GithubHelp logo

mathew-estafanous / open-stage Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 1.32 MB

A live Q&A platform that stimulates conversation, even from the quietest members.

Home Page: https://open-stage-web.herokuapp.com/

License: MIT License

Go 65.08% Dockerfile 0.36% HTML 0.41% JavaScript 23.20% CSS 10.95%

open-stage's Introduction

Open Stage

A live Q&A platform that stimulates conversation, even from the quietest members.
Try It Out · Explore API Docs

About The Project

Open Stage is a platform that bridges the communication gap by providing a platform for safe and open dialogue. Simply create a room and allow others to voice their questions and upvote other's questions as well. All done with the option of remaining anonymous to remain free from worries and judgement.

Project Structure

The project is split into both the backend, written in Go, and the frontend written using React.js.

When structuring the backend, a key focus was to follow the Domain Driven Design Principle. This principle focuses on having the domain/business logic at the heart of the app and all external implementation details are then hidden in outer layers. When looking at the different packages of the backend, the both the domain and service packages contain the main business logic of the application, while other packages implement logic that is dependant on external dependencies like a PostgreSQL database, etc.

Another important goal while building the backend of this app was to ensure wide test coverage throughout all layers of the app. This ensures the validity of the code so that we can be confident that the app works when all the tests pass.

Documentation

API Docs: https://open-stage-api.herokuapp.com/docs

At the heart of the API documentations is the swagger yaml files. Majority of the documentation was created using the go-swagger library, in which the majority of this documentation can be found in the docs package.

You can also find the application's database schema as both a SQL file or take a look at the schema diagram.

Getting Started

Setting up the project in a local development environment should be simple and easy to do. The following are steps of what you need to do, to get the project up and running.

Prerequisites

The following must be installed on your machine before running or contributing.

  • Golang - The API is built using Golang.
  • Docker - Docker is used to easily spin up needed services, like a local database.
  • Node - Node.js is important if you intend on locally running the frontend of the app.

Running

git clone https://github.com/Mathew-Estafanous/Open-Stage.git - Clone the repository.

cd ./backend - Navigate to the backend directory of the project.

docker-compose up - Startup all services, such as the REST API, database and redis server.

All the required services should be up and running, including the API on :8080.

Contributing

This project is still underdevelopment and continues to be improved upon on a regular basis. Contributions are always welcome whether they are issue reports or pull requests to include a feature. Testing is very important, which is why unit tests should be part of any new feature.

Contact

Mathew Estafanous - [email protected]

Personal Website - https://mathewestafanous.com/

Project Link - https://github.com/Mathew-Estafanous/Open-Stage

open-stage's People

Contributors

mathew-estafanous avatar

Stargazers

Gaelan McMillan avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.