PostIt is a simple application that allows friends and colleagues create groups for notifications. Users can post broadcast messages to groups and other group members will get notification based on the message priority.
PostIt allows users to do the following.
- Register and log into their accounts.
- Create broadcast groups and add other users to the groups
- Post messages to a group with message priority
- Group members get in-app notifications for
normal
messages. - Group members get in-app and email notifications for
urgent
messages. - Group members get in-app, email and SMS notifications for
critical
messages.
- Group members get in-app notifications for
- Retrieve all the messages posted to groups they belong to based on their
read
status when they are signed in.
The template directory contains the UI template for the front-end in HTML/CSS
The server directory houses the back-end implementation in NodeJS-Express-Postgres
The client directory houses the front-end implementation in ReactJS (Redux)
- Front-end: React/Redux, SASS, Webpack
- Back-end: Node/Express, Sequelize/Postgres
- Nexmo: For sending SMS notifications
- Clone the repository, navigate to the folder and run
npm install
to install dependencies. - Setup Postgres
- Set up your database credentials in
server/config/config.js
. See sample file - Run
$ sequelize db:migrate
to run database migrations - Create a Nexmo account and get your API details for SMS notification
- Create a
.env
file in your root directory and follow the example pattern below to set up environment variables. See sample file - To start app, navigate to the root directory of the app and run
node run start:dev
in development ( This is start up the app withnodemon
watching for changes ) ornpm start
in production.
You can find the Documentation for the PostIt Restful API here.
This app uses Mocha
, Chai-Http
for API tests, Jest
, Enzyme
for frontend tests and Nightwatch
for end-to-end tests
- Run
npm i mocha -g
to install Mocha globally andnpm i nyc -g
to install nyc globally before runningnpm test
to run the API tests - Run
npm i jest-cli -g
to install Jest globally before runningnpm run test:client
to run the frontend tests - Run
npm i nightwatch -g
to install Nightwatch globally ,npm run e2e-setup
. Then runnpm run e2e-server
in one terminal window to start the selenium server before runningnpm run test:e2e
in the app directory in another terminal window to run the end-to-end tests
- Setup a Node.js hosting account with any Node.js hosting platform of your choice.
- Set up an online PostgreSQL database with any PostgreSQL platform of your choice.
- Push the files to your hosting account and set up the enviroment variables in the .env file. See sample file.
Fork it!
- Create your feature branch:
git checkout -b awesome-feature
- Commit your changes:
git commit -m 'Add my awesome feature'
- Push your branch online:
git push origin awesome-feature
- Submit a pull request to
development
branch ๐
FInd the frequently asked questions about PostIT here.
- Chuks Opia
- Andela Talent Accelerator Team
- This project is licensed under the terms of the MIT License.