Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - CosDiabos/Rest-API-Messenger: This API is part of a self imposed challenge to develop a messaging app. · GitHub
Skip to content

Repository files navigation

Rest API Messenger

This API is part of a self imposed challenge to develop a messaging app (like Telegram - to give some comparison). Said API is suppose to work as the back-end API and dataset for the app. The front-end app is developed for Apple devices (iPhone / iPad with Obj-C) which will be uploaded on its own repo. This project at this point implements only CRUD actions however it's functional enough to develop basic front-end functionality.

The API is divided in three sections: Users, Sessions and Conversations. Users takes care of all related actions for users (register and hold user information), Sessions all related to current sessions on multiple devices (generating one-time access tokens, keeping track of how many sessions there are for each user, etc.) and ultimately, Conversations which stores conversations, messages and their respective authors.

Tech Stack

Back-end

How to run it

The API uses MySQL as database engine, which is necessary to run it out-of-the-box. The DB schema needed for the API is in the DB-Schema.sql file. When run, it creates the DB and required tables. No mock data is inserted.

Edit the config files inside the config folder with the connection info for the MySQL server and rename them to remove the -sample part.

Install all dependencies in the repo root folder with npm install.

After successfully install every dependency, run node app.js.

The API can be test with software similar to Postman or cURL.

URI Routes

All URI have the /api/ prefix. So, in order to do a GET request for the users route, the URI should be (for eg, locally): http://localhost:8080/api/users/

Users

/users/ : POST : Creates user
/users/ : GET : Lists all users
/users/:id : GET : Get user with :id
/users/:id : PUT : Edits user with :id
/users/:id : DELETE : Deletes user with :id

Session

/session/ : POST : Creates session
/session/ : GET : Lists all sessions
/session/:id : GET : Get session with :id
/session/:id : PUT : Edits session with :id
/session/:id : DELETE : Deletes session with :id

The next three categories should work together given that it relates the conversations (aka chats) with the users and the messages sent between (in 1-to-1 chats) or among (1-to-many) users (participants).

Conversation

/conversation/ : POST : Creates conversation
/conversation/ : GET : Lists all conversations
/conversation/:id/:length : GET : Get conversation with :id + :length
/conversation/:id : PUT : Edits conversation with :id
/conversation/:id : DELETE : Deletes conversation with :id

Conversation Message

/convoMsg/ : POST : Adds message to conversation
/convoMsg/ : GET : Lists all conversation messages
/convoMsg/:id : GET : Get conversation message with :id
/convoMsg/:id : PUT : Edits conversation message with :id
/convoMsg/:id : DELETE : Deletes conversation message with :id

Conversation User

/convoUser/ : POST : Adds user to conversation
/convoUser/ : GET : Lists all users in conversations
/convoUser/:id : GET : Get user conversation with :id
/convoUser/:id : DELETE : Deletes user from conversation :id

DB Schema

These are the relations among the several tables that store this information.

Img Schema

  • Each user may have as many sessions as they want.
  • Each conversation (chat) may have as many users as desired. Two users (or participants) should be considered as a 1-to-1 chat, more than two users should be considered as a group conversation.

Known limitations

  • Only text messages are supported at the moment;
  • No API security (token / secret / etc.).

To be coded

  • Storing and sending different types of data (Such as audio, video, images, etc.);
  • Session management;
  • PGP encryption;
  • And Moarrr!

License

Released under GPL-v3.

© Jéssica Pereira —> 2023

About

This API is part of a self imposed challenge to develop a messaging app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages