Skip to content
/ PostIt Public

Postit is a full stack application built with JavaScript (ES6), Node.js, Express, PostgreSQL, Sequelize ORM and React-Redux. The System allows registered users to send notifications to one another via groups they belong to

License

Notifications You must be signed in to change notification settings

johadi/PostIt

Repository files navigation

PostIt Coverage Status Build Status Code Climate

Postit is an Application where registered users send notifications to one another via groups they belong to. It involves In-App, Email and SMS notification methods. It also includes API with well-structured documentation that can be reused by anyone. Everything about this application is detailed below:

Application Features

  • Sign up for the system
  • Login with your credentials
  • Create group
  • Search and add other registered users to groups you joined
  • Send notification to groups you joined
  • Read notifications sent by other users from your notification board
  • Receive Email notifications if urgent messages are sent to groups you joined
  • Receive SMS and Email notifications if critical messages are sent to groups you joined
  • Read all notifications available in the groups you joined
  • View list of all groups you joined
  • View list of members in a particular group you joined
  • Logout of the application any time you wish
  • Reset password if forgotten

Technology Stack

Backend

  • Node js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
  • Express js handles backend routing.
  • Sequelize Sequelize is a promise-based ORM for Node.js and io.js. It supports the dialects PostgreSQL, MySQL, MariaDB, SQLite and MSSQL and features solid transaction support, relations and many more.
  • PostgreSQL A powerful, open source object-relational database system.

Frontend

  • Bootstrap makes styling responsive web pages faster and easier.
  • React A JavaScript library for building user interfaces.
  • Redux A predictable state container for JavaScript apps.
  • Webpack A JavaScript tool for bundling scripts, images, styles and other assets
  • Babel A JavaScript compiler for converting codes written in ES6 or JSX to ES5 that is supported by many browsers

Installation on development

This installation guide is for development purpose. For production, check the next section which is Installation on production

  • Install Node js and Postgres on your machine
  • Clone the repository git clone https://github.com/johadi/postit.git
  • Change into the directory cd /postit
  • Install all required dependencies with npm install
  • For easier accessibility, Install sequelize-cli globally for database migrations npm install -g sequelize-cli
  • Create a .env file in your root directory and follow the pattern in the .env.sample file to create environmental variables
  • Migrate your database by running this command sequelize db:migrate
  • You can undo your migrations by running this command sequelize db:migrate:undo:all.
  • Open a terminal and run npm run start:dev to start the application server side.
  • Open another terminal and run npm run build:dev to start the application client side.
  • Navigate to localhost:8080 on your browser to open the application

Installation on production

This installation guide assumes you are using heroku for your deployment. However, If you are using another platform, you can check the package.json and adjust the neccesary scripts to suit your platform.

  • Check Heroku deployment guide to use either of the two ways to deploy the application to heroku. Link here Heroku Guide .You could use Heroku CLI or Heroku Dashbaord.
  • In either ways you use, ensure you set up your Postgres database and add all the required enviromental variables using the pattern in the env.sample file in the project.
  • The scripts for Heroku to deploy the application has already been set up. All you will likely need is to set up the database, add environmental variables and then push the code to Heroku using Heroku CLI or Connect Heroku to your Github version of this project using the Heroku dashboard. If you follow this guide, the application should be live.

Testing

  • Use separate DB's for testing and development as shown in the .env.sample file
  • Run server-side test with npm test
  • Run client-side test with npm run test:client

Limitations of the project

  • User's logged in session expires when the browser is closed.
  • Users cannot create account with same username or email if already used.
  • Users cannot add themselves to other groups they don't belong. They can only be added by other registered users that are already member of the group.

API Documentation Links

Want to Contribute ?

  • Fork the repository
  • Make your contributions
  • Make sure your work is well tested
  • Create Pull request against the develop branch.

FAQ

  • What language is used to build this application ?
    • The application (both front-end and back-end) is entirely built with javascript
  • Is this an open-source project ?
    • Yes, Is an open-source project.
  • Who can contribute ?
    • Anyone can contribute as long as you would follow the contribution guides outlined above
  • Is the application hosted online ?
  • Does the application have an API ?
    • Yes, The application has a well documented API that can be viewed via a link in the API documentation section above
  • Is the application licensed ?
    • Yes, the application and its contents is under MIT license which you can view in the license section below

License

MIT

About

Postit is a full stack application built with JavaScript (ES6), Node.js, Express, PostgreSQL, Sequelize ORM and React-Redux. The System allows registered users to send notifications to one another via groups they belong to

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published