{"id":22550911,"url":"https://github.com/nandaleio/c_base","last_synced_at":"2026-04-17T11:33:44.083Z","repository":{"id":265412969,"uuid":"888011814","full_name":"Nandaleio/C_Base","owner":"Nandaleio","description":"Pocketbase alternative in C","archived":false,"fork":false,"pushed_at":"2025-03-09T12:54:57.000Z","size":6158,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T13:34:23.273Z","etag":null,"topics":["c","mongoose","pocketbase","sqlite"],"latest_commit_sha":null,"homepage":"","language":"C","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/Nandaleio.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-13T16:57:32.000Z","updated_at":"2025-03-09T12:55:01.000Z","dependencies_parsed_at":"2025-01-04T19:31:26.602Z","dependency_job_id":null,"html_url":"https://github.com/Nandaleio/C_Base","commit_stats":null,"previous_names":["nandaleio/c_base"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nandaleio%2FC_Base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nandaleio%2FC_Base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nandaleio%2FC_Base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nandaleio%2FC_Base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nandaleio","download_url":"https://codeload.github.com/Nandaleio/C_Base/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246009078,"owners_count":20708881,"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","mongoose","pocketbase","sqlite"],"created_at":"2024-12-07T17:08:58.531Z","updated_at":"2026-04-17T11:33:44.056Z","avatar_url":"https://github.com/Nandaleio.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C_Base\n\nA [Pocketbase](https://pocketbase.io/) alternative _(or copy)_ written in C and using [Mongoose web server](https://mongoose.ws/) and [SQLite](https://www.sqlite.org/)\n\n**_!!! This is probably never going to be a production grade application !!!_**\\\n**_!!! Expect crash, segfault and many other problems while using the app  !!!_**\n\n## Main Features :\n\n- SQLite DB\n- Authentication\n- Embedded admin UI\n- Less than 5MB single executable _(might exceed a bit in the future)_\n\n**Windows and Linux are currently the only supported platforms !** \n\nC_Base **does not** and **will not** provide any SDK.\\\nBut you can query the API through any HTTP client.\n\n## How to use:\n\nJust run the C_Base.exe.\\\nC_Base will create several folders :\n- `cb_data`: store the SQLite DB, files and logs\n- `cb_public`: serve static files _(e.g.: the website that will consume the API)_\n- `cb_hooks`: contains the custom JS logics **_(not implemented yet)_**\n\nThe default port is `0.0.0.0:8080` but you can change it with the `--host` or `-p` program argument\\\nYou can then access :\n- `localhost:8080/`: `cb_public` content\n- `localhost:8080/_/`: admin UI\n- `localhost:8080/api`: API\n\nThe default admins credentials are _username: **admin** password: **admin**_\\\nChange it as soon as you log into the app for the first time.\n\n\n## API Description \n\n### Standard API\n\n| URL |HTTP Verb| Description | Expected Body\n|:-|:-:|-|:-:|\n|`/api/auth/login\"`| POST | User login | {username:string, password:string} |\n|`/api/auth/register`| POST | User registration | {username:string, password:string} |\n|`/api/tables`| GET | List available tables except the C_Base ones ||\n|`/api/table/:table?where=...`| GET | Get the table rows according to the optional where clause ||\n|`/api/version`|  GET |Return the current version of the C_Base instance ||\n\n\n### Admin API\n| URL |HTTP Verb| Description | Expected Body\n|:-|:-:|-|:-:|\n|`/api/admin/login`| POST |Admin login | {username:string, password:string}|\n|`/api/admin/logs`| GET |Get the C_Base instace logs||\n|`/api/admin/query`| POST | Query the database| {query: string}|\n|`/api/admin/admins`| GET | List all the existing admins ||\n|`/api/admin/admin`| POST | Create a new admin| {username:string, password:string}|\n|`/api/admin/admin/:adminId`| DELETE | Delete the admin by _id_ ||\n|`/api/admin/table/:tableName`| POST | Create a new table ||\n|`/api/admin/table/:tableName`| DELETE | Delete the table by _tableName_ ||\n|`/api/admin/configs`| GET | Get all the C_Base configuration ||\n|`/api/admin/configs`| PUT | Set the C_Base configuration | {name:string, value:string} |\n\n\n## Roadmap :\n\nThe final goal is to implements as many features Pocketbase offers.\n\n- [X] Single executable\n- [X] SQLite through HTTP _(Basic CRUD)_\n- [X] Authentication _(only SHA256 encryption for now)_\n- [ ] API Rules\n- [ ] Real time change through websocket\n- [ ] JS engine to add custom behavior _(probably gonna use [Duktape Engine](https://duktape.org/))_\n- [ ] Mail\n\n\n## Why C_Base :\n\nC_Base is just a little personal challenge so I can learn a bit of C _(that's why it's probably full of memory leaks)_.\n\nFeel free to open an issue or start a discussion if you have any questions or improvement suggestions\n\n## Tech stack :\n\nC_Base uses :\n - [SQLite](https://www.sqlite.org/) for the database\n - [Mongoose web server](https://mongoose.ws/) for the http server\n - [Vue.js](https://vuejs.org/) and [Shadcn vue ](https://www.shadcn-vue.com/) for the admin UI\n - [Duktape](https://duktape.org/) for the JS engine\n\n## TODO : \n\nNext items I will work on :\n\n- [ ] Create table from Admin UI \n- [ ] Config table for Admins\n- [ ] Where clause from API\n- [ ] Prevent access to password and salt from user table _(didn't find elegant way to do it yet)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandaleio%2Fc_base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnandaleio%2Fc_base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandaleio%2Fc_base/lists"}