- PostIt is a simple application that implements a distributed messaging system. It allows friends and colleagues to create groups for messages and notifications.
-
It has the following basic features;
- Users can authenticate to the application
- Users can create a group
- Users can add other users to a group
- Users can post a message to a group
- Users can view messages posted to their groups
You can check out the online version at https://app-postit.herokuapp.com/ Also, you can use postman to consume the Restful API provided by the application See https://app-postit.herokuapp.com/api/doc for the api documentation
- The application was developed with NodeJs
- Express was used for routing
- The Postgres database was used with sequelize as the ORM
Some other tools used include:
- Babel to transpile ES6 to ES5
- Webpack to bundle assets
- Materialize to add styles and components that implement the Google Material Design specifications
- Ensure you have NodeJs and postgres installed
- Clone the repository
https://github.com/tomipaul/PostIt
- Change your directory
cd PostIt
- Install all dependencies
npm install
- Create a .env file in the root of the folder following the format in the provided .env.example file.
- Start the app with
npm start
- You can now use PostIt by visiting http://localhost:port (where port is the PORT environment variable in your .env file).
- To launch the app in a development-optimized environment, you have to run
npm run start:dev
on a terminal to start up the server application and then runnpm run build:dev
on another terminal to start up the client application. This setup is recommended for development.
- The backend tests have been written using Mocha framework and Chai assertion library
- Run the test with
npm test
- The frontend tests have been written using Jest framework and assertion library
- nock was used to mock API calls
- redux-mock-store was used to mock the redux store
- enzyme was used to mount components for tests
- Run the tests with
npm run frontend:test
- Fork this repositry.
- Clone to your local environment: git clone git@github.com:your-username/inverted-index.git
- Create a branch on a feature you want to work on: git checkout -b proposed-feature
- Commit your changes: git commit -m "new stuff added"
- Push to the remote branch: git push origin proposed-feature
- Open a pull request on here
- Updating a user's profile: On the backend, there is an endpoint that allows a user to update his/her profile but it is not implemented on the frontend
- Removing a user from a group: On the backend, there is an endpoint that permits the creator of a group to remove a user from the group, but it is not implemented on the frontend
- Deleting a group: On the backend, there is an endpoint that permits the creator of a group to delete the group but it is not implemented on the frontend.
In addition:
- A user cannot delete a message he/she posted to a group
- When a user is added to a new group, notifications are not sent. Also, the user has to refresh the page to see the updated groups list.
- Although messages do not cluster the user's board, proper archiving is not done and users cannot see older messages.
-
How do I see the groups I belong to?
On succesful authentication, user is taken to the dashboard. All the groups a user belongs to is listed on the left sidebar of the user's dashboard
-
How do I see all groups?
A user cannot see all groups. You can only see the groups you created and those you've been added to as a member
-
How do I view a group's messages?
On the dashboard, you can click on the intended group to view messages.
-
How do I add a user to a group?
On the dashboard, there is a header where the group name and description is displayed. On the header is a caret-down icon which on click drops down a menu. Click on
Add User
; this brings out a search box where you can search for users. For every searchstring input, users with username that match the searchstring are displayed with an add icon. Click on the add icon to add the intended user.On the dropdown menu, there's also the
Member List
option which on click shows a list of all the group members. You can click on any member in the list to view the member's profile. -
How can I see all members of a particular group?
See above question
How do I add a user to a group?
This project is available for use and modification under the MIT License. See the LICENSE file for more details.