Postit is a simple applicaton that helps you connect with friends. Create groups to suit your style, add friends, write messages, and post it!
- API Documentation
- Key Features
- Technology Stack
- Dependencies
- Installation
- Tests
- Limitations
- How to contribute
- The Dev Team
- Licence
- FAQs
The documentation for the Postit API can be found here.
- Users can create new accounts to access all other features.
- Users can create groups and add other users to those groups.
- Groups are communication channels that allow members post messages to be read by other users.
- Groups can be created as public and private groups.
- Only users who are members of a group can post messages to those groups.
- Postit uses JWT for authentication.
- On successfull sign up or sign in, the user receives a token in the
x-auth
header which can be used to authenticate requests to protected endpoints. For a list of endpoints that are protected and those that are not, see our documentation.
- The client side implementation includes socket.io, which helps ensure that the app updates in real time. You can interact with the hosted app here.
- Users get email notifications when an urgent or a critical message is posted by other members in groups to which they belong.
- Forgot your password? No problem. Users can request a password reset, and get a mail with reset instructions.
Postit uses the PERN (PostgreSql, Express, ReactJs, NodeJs) stack.
- Front-end implementation in REACT/REDUX
- Styling with SASS
- WEBPACK for bundling
- Server-side implementation is built on NODE, with an EXPRESS server and SEQUELIZE as the ORM for querying the POSTGRES DB.
- Written in ES6 (ECMAScript 2015)
- BABEL transpiler
- Json Web Tokens (JWT) for authentication.
- Uses ESLINT which was configured to use Airbnb-base rules for ensuring code quality.
To use Postit, you would need:
- NodeJS - a JavaScript runtime built on Chrome's V8 JavaScript engine.
- PostgreSQL - a popular object-relational database management system (ORDBMS).
- Sequelize - Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, SQLite and MSSQL and features solid transaction support, relations, read replication and more.
- Other dependencies are listed in the package.json and should be installed with
npm install
on the command line. - Environment variables defined in a
.env
file. You can find a.sample.env
file in the repository root to guide you on setting up your.env
file.
To get started,
- Clone this repository to your local machine using https://github.com/oahray/bc-24-postit.git
- Navigate to the root of the cloned local repository.
- Create a file named
.env
using the.sample.env
file - located on the repository root folder - as a guide. - Run
npm install
to install the dependencies. - Run
npm start
to run the application.
Three kinds of tests have been included:
- API Server tests
- Client side tests for react/redux implementation
- End-to-end tests to assure User Experience
Server side tests can be run on the command line with npm test
Client side tests can be run on the command line with npm run client-test
End-to-End tests can be run on the command line with npm run e2e-test
. For this to work however, you would need to:
- create a
bin
folder in the root of your branch, - download and move chromedriver and selenium-server-standalone binaries to the folder. Be sure to download the chrome driver that corresponds to your local machine.
- start the api server (on e2e mode) on a separate terminal with
npm run e2e-server
. - Run the End-to-End tests can be run on the command line with
npm run e2e-test
If you discover a bug while testing or using app, please create an issue to report it. That is a way to contribute to the development of Postit.
Currently...
- users cannot join groups on their own by searching and then joining (for public groups), or requesting to join (for private groups). This means that users can only be part of groups that they create or are added to.
- there is no difference between public and private groups. In future versions, groups type would determine to what extent members and other users can interract with the group.
Interested in the development of POSTIT? Awesome! You can check out the Issues page, and if you find something you want to work on, let us know in the comments.
Pull Requests should:
- Contain code written in ES6 for Javascript files.
- Lint and adhere to the Airbnb javascript style guide.
- Pass all tests.
Copyright © The MIT License
Postit is a communication platform that allows users create signup, create groups, add users to their groups and interact with other group members by posting messages to their groups.
You can signup for an account on https://postit-ray.herokuapp.com to use the client side implementation built on the API. If you are a developer and wish to use the API, see the documentation to learn how to start and what endpoints are available.
Yes it is.
Anyone! To contribute, simply raise a PR with your contribution. Only PRs that meet the standard would be considered. For more details on PR conventions for the Postit project, see the How to contribute section of this README, and the wiki for this repository.
This project is a full stack Javascript application
See The MIT License for the permissions available to you.