├── .gitignore
├── .DS_Store
├── .swm
├── swimm.json
└── chat-app-onboarding.eovyd.sw.md
├── package.json
├── server.js
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TiffinTech/chat-app/HEAD/.DS_Store
--------------------------------------------------------------------------------
/.swm/swimm.json:
--------------------------------------------------------------------------------
1 | {
2 | "repo_id": "Z2l0aHViJTNBJTNBY2hhdC1hcHAlM0ElM0FUaWZmaW5UZWNo",
3 | "configuration": {
4 | "swmd": true
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/.swm/chat-app-onboarding.eovyd.sw.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: eovyd
3 | name: Chat App Onboarding
4 | file_version: 1.1.0
5 | app_version: 1.0.6
6 | ---
7 |
8 | Onboarding to the React chat app
9 |
10 |
11 |
12 | This file was generated by Swimm. [Click here to view it in the app](https://app.swimm.io/repos/Z2l0aHViJTNBJTNBY2hhdC1hcHAlM0ElM0FUaWZmaW5UZWNo/docs/eovyd).
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chat-app",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "body-parser": "^1.20.0",
13 | "express": "^4.18.1",
14 | "http": "^0.0.1-security",
15 | "mongoose": "^6.5.3",
16 | "socket.io": "^4.5.1"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const bodyParser = require('body-parser')
3 | const app = express();
4 | const http = require('http').Server(app);
5 | const io = require('socket.io')(http);
6 | const mongoose = require('mongoose');
7 |
8 | app.use(express.static(__dirname));
9 | app.use(bodyParser.json());
10 | app.use(bodyParser.urlencoded({extended: false}))
11 |
12 | const Message = mongoose.model('Message',{
13 | name : String,
14 | message : String
15 | })
16 |
17 | var dbUrl = 'mongodb+srv://user:password@cluster0.rlbj49y.mongodb.net/?retryWrites=true&w=majority'
18 |
19 |
20 | app.get('/messages', (req, res) => {
21 | Message.find({},(err, messages)=> {
22 | res.send(messages);
23 | })
24 | })
25 |
26 |
27 | app.get('/messages/:user', (req, res) => {
28 | var user = req.params.user
29 | Message.find({name: user},(err, messages)=> {
30 | res.send(messages);
31 | })
32 | })
33 |
34 |
35 | app.post('/messages', async (req, res) => {
36 | try{
37 | let message = new Message(req.body);
38 |
39 | let savedMessage = await message.save()
40 | console.log('saved');
41 |
42 | // place any words you dont want to be used
43 | let censored = await Message.findOne({message:'badword'});
44 | if(censored)
45 | await Message.remove({_id: censored.id})
46 | else
47 | io.emit('message', req.body);
48 | res.sendStatus(200);
49 | }
50 | catch (error){
51 | res.sendStatus(500);
52 | return console.log('error',error);
53 | }
54 | finally{
55 | console.log('Message Posted')
56 | }
57 |
58 | })
59 |
60 |
61 |
62 | io.on('connection', () =>{
63 | console.log('a user is connected')
64 | })
65 |
66 | mongoose.connect(dbUrl,(err) => {
67 | console.log('mongodb connected',err);
68 | })
69 |
70 | let server = http.listen(3000, () => {
71 | console.log('the server is running on port', server.address().port);
72 | });
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |