{"id":20748948,"url":"https://github.com/rhaeguard/cells","last_synced_at":"2026-06-10T09:31:25.054Z","repository":{"id":249210527,"uuid":"830502778","full_name":"rhaeguard/cells","owner":"rhaeguard","description":"a spreadsheet app with lisp-like formulas","archived":false,"fork":false,"pushed_at":"2025-06-03T05:49:38.000Z","size":939,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T17:18:36.425Z","etag":null,"topics":["javascript","lisp","sheets","spreadsheets"],"latest_commit_sha":null,"homepage":"https://rhaeguard.github.io/cells/","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/rhaeguard.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,"zenodo":null}},"created_at":"2024-07-18T11:59:09.000Z","updated_at":"2025-06-03T05:49:40.000Z","dependencies_parsed_at":"2025-06-03T06:58:07.147Z","dependency_job_id":"4720e627-50a2-4bd3-91a3-9783d85cc271","html_url":"https://github.com/rhaeguard/cells","commit_stats":null,"previous_names":["rhaeguard/cells"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rhaeguard/cells","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhaeguard%2Fcells","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhaeguard%2Fcells/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhaeguard%2Fcells/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhaeguard%2Fcells/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhaeguard","download_url":"https://codeload.github.com/rhaeguard/cells/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhaeguard%2Fcells/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34146871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["javascript","lisp","sheets","spreadsheets"],"created_at":"2024-11-17T08:19:39.712Z","updated_at":"2026-06-10T09:31:24.979Z","avatar_url":"https://github.com/rhaeguard.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cells\r\n\r\na spreadsheet app with lisp-like formulas\r\n\r\nhttps://github.com/user-attachments/assets/d96d71a8-bd03-4001-a5c4-994fce659f3c\r\n\r\n## todo\r\n\r\n### Basic Functionalities\r\n\r\n- [ ] basic formulas\r\n    - [x] arithmetic operations\r\n    - [x] aggregation functions (e.g., `sum`, `mean`, etc.)\r\n    - [ ] custom functions\r\n\r\n- [ ] data types\r\n    - [x] number\r\n    - [x] text\r\n    - [x] boolean\r\n    - [ ] date\r\n\r\n- [ ] data validation\r\n\r\n### Functionalities for User Interaction\r\n\r\n- [ ] cell formatting\r\n    - [ ] text alignment (left, centre, right)\r\n    - [ ] font size\r\n    - [x] font style (bold, italic, underline, strikethrough)\r\n    - [ ] cell background color\r\n\r\n- [ ] general functionalities\r\n    - [ ] copy + paste\r\n    - [ ] undo + redo\r\n    - [x] select a range using mouse\r\n    - [x] select cells individually using ctrl\r\n    - [ ] select cells range with shift\r\n\r\n### Advanced Features\r\n\r\n- [x] circular dependency/cycle detection\r\n- [x] helpful error messages\r\n- [ ] charts\r\n- [ ] multiple sheets\r\n- [ ] persist and load\r\n- [x] load from CSV/TSV, etc.\r\n- [ ] load from JSON\r\n\r\n### User Interface and Experience\r\n - [ ] minimal user interface\r\n    - [ ] double shift to open a menu to do things like load, save, switch sheets etc.\r\n\r\n## built in functions\r\n\r\n```sh\r\n# arithmetic\r\n=(+ 10 A1) # add\r\n=(- 10 A2) # sub\r\n=(* 10 A2) # mult\r\n=(/ 10 A2) # div\r\n=(^ 10 A2) # pow\r\n# comparison\r\n=(= 10 A2) # equality check\r\n=(\u003e 10 A2) # greater than\r\n=(\u003e= 10 A2) # greater than equal\r\n=(\u003c 10 A2) # less than\r\n=(\u003c= 10 A2) # less than equal\r\n=(\u003c\u003e 10 A2) # not equal\r\n# aggregation\r\n=(sum A1:B10) # sums the range\r\n=(mean A1:B10) # finds mean value in the range\r\n=(mode A1:B10) # finds mode value in the range (not implemented yet)\r\n=(count A1:B10) # finds the number of elements in the range\r\n=(min A1:B10) # finds the minimum value in the range\r\n=(max A1:B10) # finds the maximum value in the range\r\n# conditionals\r\n=(if condition resultTrue resultFalse) # conditional value\r\n=(if (\u003e A1 10) 100 200) # if example\r\n=(if (\u003e A1 10) \"hi\" \"bye\") # if example\r\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhaeguard%2Fcells","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhaeguard%2Fcells","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhaeguard%2Fcells/lists"}