{"id":18086129,"url":"https://github.com/maxkrv/uchat","last_synced_at":"2026-03-15T08:49:30.805Z","repository":{"id":235256941,"uuid":"756490306","full_name":"maxkrv/uchat","owner":"maxkrv","description":"Chat application","archived":false,"fork":false,"pushed_at":"2024-04-22T18:48:24.000Z","size":7514,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T16:45:38.257Z","etag":null,"topics":["c","gtk3","websockets"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxkrv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-12T19:07:27.000Z","updated_at":"2024-04-26T16:24:14.000Z","dependencies_parsed_at":"2024-04-22T21:05:07.568Z","dependency_job_id":"57e96b04-863c-47d9-be2b-62cfa1b0050c","html_url":"https://github.com/maxkrv/uchat","commit_stats":null,"previous_names":["maxkrv/uchat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrv%2Fuchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrv%2Fuchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrv%2Fuchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxkrv%2Fuchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxkrv","download_url":"https://codeload.github.com/maxkrv/uchat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248642889,"owners_count":21138352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["c","gtk3","websockets"],"created_at":"2024-10-31T16:06:41.318Z","updated_at":"2026-03-15T08:49:25.776Z","avatar_url":"https://github.com/maxkrv.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Cozy Chat - your ultimate chat application 🚀\n\nWelcome to Cozy Chat, a powerful chat application built with C and SQLite.\n\n## 🛠️ Technologies Used 🛠️\n\n-   **C**: The core language used to build this application.\n-   **SQLite**: Used for storing and managing data.\n-   **JWT**: Used for authentication.\n\n## 📚 Libraries Used 📚\n\n-   **cJSON**: For handling JSON data.\n-   **libmx**: A custom utility library.\n-   **mongoose**: For handling HTTP requests and WS connections.\n-   **sqlite3**: For interacting with SQLite databases.\n-   **CURL**: For sending HTTP requests to server\n\n## 📁 Project Structure 📁\n\n-   **client**: Contains the client-side code.\n-   **server**: Contains the server-side code.\n-   **db**: Contains the SQLite database and related files(like migrations and seeds).\n-   **lib**: Contains static libraries used in the project.\n\n## 🚀 Getting Started 🚀\n\nTo get started with Cozy Chat, clone the repository and follow the instructions in the Makefile.\n\nFirst of all you have to compile all static libs and repository code\n\n`make`\n\nAfter that [install gtk+3](https://letmegooglethat.com/?q=how+to+install+gtk3) if you dont have it.\n\nThan you need to start server.\nThere is 2 ways to do it:\n\n1. Easy(checks if any changes was made in server folder(recompiles if necessary) and than launch)\n\n    `make server`\n\n2. Edvanced(you can pass options to configure server)\n\n    `./uchat_server 3000`\n\nWhen server have started you can launch client.\nThere is 2 ways to do it:\n\n1. Easy(checks if any changes was made in client and than launch)\n\n    `make client`\n\n2. Edvanced\n\n    `./uchat localhost 3000`\n\n## 🗄️ Database 🗄️\n\n💡 Migrations, Triggers, and Database Flow 💡\n\nProject uses migration to save db state amoung developers, triggers to change updated_at data, foreign keys to ensure security of provided data\n\nHere is the schema of the Cozy Chat database:\n\n![UChat Database Schema](assets/uchat-db.png)\n\n## 🌐 API 🌐\n\nApi is written on C using mongoose embeded framework.\nIt provides RESTfull architecture and uses MVC architeture design.\nCozy Chat provides comprehensive API documentation using OpenAPI and AsyncAPI specifications.\n\n![server-design-image](assets/server-request-flow.png)\n\n### \u003cimg src=\"assets/openapi-logo.svg\" width=\"20\" height=\"20\"/\u003eOpenAPI Documentation \u003cimg src=\"assets/openapi-logo.svg\" width=\"20\" height=\"20\"/\u003e\n\nThe OpenAPI documentation describes the RESTful API endpoints and their corresponding request and response structures.\n\nYou can find doc at `server/docs/open-api.yaml`\nHow to open it? Google it if you are really interested 😉\n\n(We used `OpenAPI (Swagger) Editor` VS code extenstion preview option)\n\n[Link to docs](https://uchat-api-docs.vercel.app/)\n\n### \u003cimg src=\"assets/asyncapi-logo.svg\" width=\"15\" height=\"15\"/\u003e AsyncAPI Documentation \u003cimg src=\"assets/asyncapi-logo.svg\" width=\"15\" height=\"15\"/\u003e\n\nThe AsyncAPI documentation provides information about websocket comunication\n\nYou can find doc at `server/docs/async-api.yaml`\nHow to open it? It is harder than open-api(couse it is not such popular).\n\nYou can use `asyncapi-preview` VS code extenstion preview option\n\n### Happy chatting! 😄\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxkrv%2Fuchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxkrv%2Fuchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxkrv%2Fuchat/lists"}