https://github.com/qubitpi/alexandria
⭐ React web app of pocket grammar for multi-language learners
https://github.com/qubitpi/alexandria
ancient-greek argos cypress eslint german github-actions hebrew jest language latin lighthouse prettier react-redux reactjs redux sanskrit sentry-io typescript webpack yarn-berry
Last synced: about 1 month ago
JSON representation
⭐ React web app of pocket grammar for multi-language learners
- Host: GitHub
- URL: https://github.com/qubitpi/alexandria
- Owner: QubitPi
- License: apache-2.0
- Created: 2024-11-24T15:12:45.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2025-02-26T08:57:46.000Z (2 months ago)
- Last Synced: 2025-02-26T09:32:25.256Z (2 months ago)
- Topics: ancient-greek, argos, cypress, eslint, german, github-actions, hebrew, jest, language, latin, lighthouse, prettier, react-redux, reactjs, redux, sanskrit, sentry-io, typescript, webpack, yarn-berry
- Language: TypeScript
- Homepage: https://alexandria.qubitpi.org/
- Size: 140 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
- [Introduction](#introduction)
- [Development](#development)
- [Getting Source Code](#getting-source-code)
- [Scripts](#scripts)
- [Automatically Formatting Codebase](#automatically-formatting-codebase)
- [Application Monitoring](#application-monitoring)
- [License](#license)## Introduction
**Alexandria** is a content-opinionated web app for memorizing Grammar of the following languages:
- German
- Ancient Greek
- Latin
- Hebrew (Classical)
- Sanskrit (Classical)It was initiated when I needed a centralized grammar reference of languages I was studying so that I can utilize my
fragmented time more efficiently by peeking into them with my mobile phone.The app is hosted at [alexandria.qubitpi.org](https://alexandria.qubitpi.org/).
## Development
Alexandria has the following packages:
- [`alexandria-app`](packages/alexandria-app): holding business logics of the app
- [`alexandria-redux`](packages/alexandria-redux): managing all app states. Alexandria uses
[Redux state management][Redux]
[][Redux]
instead of ~~[React state management][useState]~~ for a much more maintainable decoupling of React components### Getting Source Code
```console
git clone [email protected]:QubitPi/alexandria.git
cd alexandria
```Install dependencies by
> [!NOTE]
>
> Node 22 and Yarn 2 must be installed in local environment.```console
yarn
```### Scripts
- `yarn start`: Runs the app in development mode. Open http://localhost:3000 to view it in the browser. The page automatically reloads
if we make changes to the code. we will see the build errors and lint warnings in the console.
- `yarn test`: Runs the unit tests
- `yarn cypress:open` & `yarn e2e`: Opens Cypress End-to-End test console and runs the End-to-End tests, respectively
- `yarn build`: Builds the app for production to the build folder. It correctly bundles React in production mode and
optimizes the build for the best performance. The build is minified and the filenames include the hashes.### Automatically Formatting Codebase
When CI/CD complains about "Code style check" as the following:

Simply run the following command at project root which will auto formatting the codebase using Prettier:
```console
yarn prettier --ignore-path .gitignore . --write
```> [!TIP]
>
> It's always a good practice to auto-formatting code whenever convenient## Application Monitoring
sentry.io has been integrated into the [alexandria.qubitpi.org](https://alexandria.qubitpi.org/). Specifically:
- [sourcemap](https://docs.sentry.io/platforms/javascript/legacy-sdk/sourcemaps/) is uploaded to sentry during build time
- error trace are sent to sentry during run timeWhile error trace will always be sent in production mode (`process.env.NODE_ENV === "production"`), an
[.env.sentry-build-plugin](https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/webpack/) is, however,
required for `yarn build` to be able to generate and upload the sourcemap.> [!NOTE]
>
> If the `.env.sentry-build-plugin` is not present, `yarn build` will still run successfully. It's just not possible
> then to locate the exact location of error in code on sentry issue console because sourcemap hasn't been uploaded## License
The use and distribution terms for [alexandria]() are covered by the [Apache License, Version 2.0](./LICENSE).
[Redux]: https://react-redux.qubitpi.org/
[useState]: https://react.qubitpi.org/reference/react/useState