Skip to content

πŸ“‘ API for chat application for DogeCodes React course

Notifications You must be signed in to change notification settings

dogecodes/react-chat-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

44 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DogeCodes

Chat API

API for chat application for DogeCodes React course.

This is a simple API server that implements a logic required to correct work of DogeCodes React Chat application.

Requirements

To run this server localy you need to have these requirements:

Installations

Use following commands to run this API-server localy:

git clone https://github.com/dogecodes/react-chat-api.git
cd react-chat-api
npm install
npm run start:dev # or `npm start` for production

Note: Don't forget to start mongod for connection to database.

API

Current version of API is v1, so you need to specify the version of API before every route. For example:

http://localhost:8000/v1/users/me
http://localhost:8000/v1/chats

HTTP

Here's the map of API's HTTP routes:

  • / β€” routes related to authentication.
    • /signup POST β€” create new user with username and password.
    • /login POST β€” log user in with username and password.
    • /logout GET β€” log out active user.
  • /users β€” routes related to users.
    • /users GET β€” retrieve data about all users.
    • /users/me GET β€” retrieve my user's data.
    • /users/me POST β€” update my user's information (username, firstName, lastName and city).
    • /users/:id GET β€” retrieve information about user with specific :id.
  • /chats β€” routes related to chats.
    • /chats GET β€” retrieve information about all chats.
    • /chats POST β€” create new chat with specified title.
    • /chats/my GET β€” get list of all user's chats.
    • /chats/:id GET β€” get chat's information with messages by specific chat's :id.
    • /chats/:id POST β€” send new message to chat with specific :id.
    • /chast/:id DELETE β€” delete chat with specific :id. Only creator of the chat can delete it.
    • /chats/:id/join GET β€” join chat with specific :id.
    • /chats/:id/leave GET β€” leave chat with specific :id.

If you're using Insomnia for debugging APIs, you can download a workspace backup:

Download .zip

Sockets

This API also emmits and listens some socket.io events.

Sockets connection requires authentication with access-token. Here's an example of establishing sockets connection:

import SocketIOClient from 'socket.io-client';

socket = SocketIOClient('path/to/api', {
  query: {
    token: '...your access-token here...',
  },
});

Here's the list of events:

Emmiting

  • new-message β€” emmited when someone sends new message to specific chat.
  • new-chat β€” emmited when someone creates new chat.
  • deleted-chat β€” emmited when someone deletes a chat.

Listening

  • connection β€” connection of socket.io client.
  • mount-chat β€” mount a client to listen for messages in chat with specific :chatId.
  • unmount-chat β€” unmout a client from listening for messages in chat with specific :chatId.
  • send-message β€” send message with content to chat with

License

MIT Β© Denys Dovhan