{"id":23056276,"url":"https://github.com/habbes/spreadsheet","last_synced_at":"2025-08-15T05:32:36.853Z","repository":{"id":39463279,"uuid":"197782707","full_name":"habbes/spreadsheet","owner":"habbes","description":"Simple spreadsheet web app","archived":false,"fork":false,"pushed_at":"2023-01-04T04:50:38.000Z","size":21748,"stargazers_count":7,"open_issues_count":22,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-14T20:23:22.706Z","etag":null,"topics":["javascript","react","spreadsheet","webapp"],"latest_commit_sha":null,"homepage":"https://sheets.habbes.xyz","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/habbes.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-07-19T14:03:04.000Z","updated_at":"2024-03-07T13:03:30.000Z","dependencies_parsed_at":"2023-02-01T21:46:37.321Z","dependency_job_id":null,"html_url":"https://github.com/habbes/spreadsheet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/habbes%2Fspreadsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/habbes%2Fspreadsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/habbes%2Fspreadsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/habbes%2Fspreadsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/habbes","download_url":"https://codeload.github.com/habbes/spreadsheet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229893805,"owners_count":18140620,"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":["javascript","react","spreadsheet","webapp"],"created_at":"2024-12-16T01:14:45.163Z","updated_at":"2024-12-16T01:14:45.754Z","avatar_url":"https://github.com/habbes.png","language":"JavaScript","readme":"# Quicksheets\n\nA simple browser-based spreadsheet app: https://sheets.habbes.xyz\n\n![Quicksheets screencast](screencast.gif)\n\n## How it works\n\nWhen a cell on the spreadsheet is updated, all the non-empty cells\nare parsed and evaluated and updated with their new values (or errors). It has plenty of room for optimization but should be good enough for a sparse 50x26 grid.\n\nTo enter a formula in a cell, prefix the formula expression with `=`, e.g. `=SUM(A1:A10)`.\n\n### Code organisation\n\n- `src`\n    - `app`: contains all the UI code, based on React and Redux\n    - `lib`: contains the modules implementing the core spreadsheet engine\n        - `eval`: modules responsible for parsing and evaluating formulae and expressions\n        - `functions`: implementations of the functions available in the spreadsheet (e.g. SUM, PRODUCT, etc.)\n        - `grid`: abstractions for working with 2-D grids\n        - `spreadsheet.js`: implements the `Spreadsheet` class that encapsulate the entire spreadsheet engine\n\nThe formula syntax is specified in [grammar.md](grammar.md).\n\nAll available built-in functions are listed in [functions.md](functions.md)\n\nUnit tests are located in `tests` folders in the various subfolders under the `src` directory.\nE2E tests are located in `cypress/integration` directory.\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n- `yarn start`\n\nRuns the app in the development mode.\u003cbr\u003e\nOpen [http://localhost:3000](http://localhost:3000) to view it in the browser.\n\nThe page will reload if you make edits.\u003cbr\u003e\nYou will also see any lint errors in the console.\n\n- `yarn test`\n\nRuns unit tests in interactive mode. Tests are re-run when files are changed.\n\n- `yarn test:e2e`\n\nRuns end-to-end tests (using Cypress)\n\n- `yarn test:e2e-watch`\n\nAllows you to run end-to-end tests interactively and watch them on a GUI.\n\n- `yarn test:all`\n\nRuns all the tests\n\n- `yarn build`\n\nBuilds the app for production to the `build` folder.\n\n- `yarn deploy`\n\nBuilds and deploys the app to Firebase hosting.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhabbes%2Fspreadsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhabbes%2Fspreadsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhabbes%2Fspreadsheet/lists"}