A simple Node.js application that allows friends and colleagues create groups for messaging. Up to date version of project can be found on the development
branch.
- NodeJS/Express
- Postgres/Sequelize ORM
- ReactJS/Redux
- Webpack
- Clone the repository:
git clone https://github.com/mazma1/post-it
- Ensure you have installed NodeJS and Postgres
- Create a Nexmo account and get your API key and secret which you will include as
NEXMO_KEY
andNEXMO_SECRET
in your.env
file. This is required for SMS notification - Navigate into the app's root directory:
cd post-it
- Create a
.env
file in the root directory using the sample.env.sample
file - Install all dependencies:
npm install
- Run tests to ensure the app is not broken:
npm test
- Run
npm run db:migrate
to populate your database with initial user data - Start the app:
npm run start:dev
- Signup
- Signin
- View groups on message board
- View messages in respective groups
- Post messages to groups
- View members of a group
- Add user to group
- Create new group
- Search for registered users
Access to endpoints are restricted based on the authorization token assigned to the user. This token is generated when a new user signs up, and when a returning user signs in.
For more of the api, go here.
- Users are added to the group one at a time.
- Group creator cannot remove users from group
- No in-app notification, only email and SMS
- Users cannot update their profile
This project is open for contributions. All contributions must adhere to the following Airbnb style guides:
- Raise an issue in the app's repo
- Fork the repository
- Implement the said feature
- Commit your changes
Your commit message(s) should follow the format below. It should comprise of:
- A header: summarizes what feature was implemented
- A body: gives a concise description of said feature
feat(kafka): implement exactly one time delivery - ensure every event published to kafka is delivered exactly once - implement error handling for failed delivery
- Raise a pull request to the development branch
Pull requests should also follow the format below:
- What does this PR do? - Description of Task to be completed? - How should this be manually tested? - Any background context you want to provide? - Screenshots (if appropriate) - Questions
View frequently asked questions here