{"id":24875108,"url":"https://github.com/glaucopater/chatapp","last_synced_at":"2026-05-06T20:35:49.344Z","repository":{"id":39024291,"uuid":"165367566","full_name":"glaucopater/chatapp","owner":"glaucopater","description":"A Python / ReactJS chat app","archived":false,"fork":false,"pushed_at":"2023-03-02T17:11:27.000Z","size":2037,"stargazers_count":1,"open_issues_count":12,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-27T02:17:03.199Z","etag":null,"topics":["python","reactjs","rest-api","sqlite3","websocket"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glaucopater.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-12T09:01:16.000Z","updated_at":"2023-01-16T13:18:03.000Z","dependencies_parsed_at":"2023-02-02T20:31:48.474Z","dependency_job_id":null,"html_url":"https://github.com/glaucopater/chatapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/glaucopater/chatapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glaucopater%2Fchatapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glaucopater%2Fchatapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glaucopater%2Fchatapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glaucopater%2Fchatapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glaucopater","download_url":"https://codeload.github.com/glaucopater/chatapp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glaucopater%2Fchatapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32711492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","reactjs","rest-api","sqlite3","websocket"],"created_at":"2025-02-01T07:31:46.178Z","updated_at":"2026-05-06T20:35:49.306Z","avatar_url":"https://github.com/glaucopater.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChatApp\n---\nA simple chat application that features a python backend side, React on frontend side and Socket.io for communication.\n\n![ChatApp Demo](/chatapp.jpg)\n\n# Backend\n---\nThe backend side is made in Python with Flask and SqlAlchemy to manage the database (Sqlite3) and a simple api rest for limited CRUD actions.\nOn the same endpoint is running also the socket io host, this could be moved to another host for scalability.\n\n# Frontend\n---\nIn Frontend side a react app, with sass, proptypes and cookie management. The cookie is used to simulate an user session.\nThe components are managing a login process, the chatroom and the message and.\nFor semplicity at the moment there is only one chatroom, but this can be extended easily.\nMessages are presented as required in chronological order, with distinction for the current user message.\nI have added a check in order to let unique user at once.\nIn case of connection error the client is able to render a diffent component.\n\n# Open points / nice to have / proposals\n---\n* Auth token and users stored in the db\n* Https \n* Client side syncronization: this is anche idea I had during the first commits. In order to simulate a local db I used localStorage. At the same time It can be used to have a small PWA keeping the message for the user when there is no connection.\n\nIt has been tested in desktop and mobile, Windows,Gnu/Linux and Mac. And also running in AWS. \n\n\n## How to Start:\n1. Verify that you have NPM, Python3, and Pip installed (inside the server folder there is a requirements.txt for this)\n\n\n**1. Start the Flask Backend server:**\n\n```bash\n$ cd server/server\n$ export FLASK_DEBUG=True\n$ export FLASK_APP=server\n$ flask run\n```\nThis will start up a Flask server at default `http://localhost:5000`.\n\nDatabase\n---\nThere is already a prepared sqlite3 database of messages in order to test, otherwise to create a new fresh database run:\n\n```bash\n$ cd server/server\n$ python setup_database.py\n```\n\n**2. Start the React development server:**\n```bash\n$ cd client\n$ npm start\n```\nThis will startup a React development server at `http://localhost:3000`.\n\n**3. Visit `http://localhost:3000` in your browser to view the application.**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglaucopater%2Fchatapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglaucopater%2Fchatapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglaucopater%2Fchatapp/lists"}