Monorepo for all frontend source code under the Architus project. Archit.us provides a web dashboard server administrators and members can use to modify settings, view statistics and logs, and manage custom emoji and auto-responses. Docs.archit.us provides the platform to host a user guide, a changelog, and implementation documentation.
To use Archit.us to manage the Architus bot on installed servers or add it to new ones, connect with Discord to be redirected to the web dashboard, where you can view settings and add the bot to your servers.
Architus is an open source project, and we welcome contributors. The monorepo is split into a set of Yarn workspaces/Lerna packages, and contains the following packages:
@architus/app
- Main web dashboard codebase, built with React, Gatsby, TypeScript, and Linaria@architus/docs
- Documentation site, built with React, Gatsby, TypeScript, and Linaria@architus/lib
- Utility functions/types, built with TypeScript@architus/facade
- Architus design system, including React components and design tokens to be consumed in downstream website projects via Linaria
To start working on any of the above packages, you'll need to have Node.js installed. Once installed, run the following commands to download dependencies:
npm install -g yarn
yarn install
Because both websites are built with Gatsby at their core, there are two options to preview the app while developing: a hot reload-enabled development server (recommended) and a statically-generated site preview.
At the repository root, run:
yarn workspace @architus/<package> start
yarn workspace @architus/<package> build
yarn workspace @architus/<package> serve
Each project uses ESLint and Prettier to enforce TypeScript code style across the repository, in addition to the TypeScript compiler. To run them locally, run:
yarn lint
yarn typecheck
Each package has testing configurations, based on Jest, for use with creating unit tests and tracking coverage. To run all tests, run:
yarn test
If you have an issue about the bot, the web dashboard, or have any other questions, feel free to create a new issue or join our Discord server
This project uses a variety of useful tooling to help develop, manage, and deploy the application. Among those are:
- TypeScript - Statically typed superset of JavaScript used to make code self-documenting and catch runtime errors early
- Linaria - Framework for using CSS-in-JS without a runtime overhead via static extraction
- Gatsby - Static site generator and data layer used to manage the build lifecycle of both the docs website and the web dashboard
- Lerna - Monorepo management CLI used to automatically create symbolic links between dependent local packages, allowing developers to modify each locally
- Yarn - Package/dependency management tool
- GitHub Actions - Used to automatically run CI/CD
- Jest - Used to run unit tests and track coverage via Istanbul
- ESLint / Prettier - Used to enforce consistent code style across the project & catch
- Netlify - Used to automatically deploy the live and canary builds. Deploy information is available at the Deploy page
- Production (
master
) is deployed at archit.us - Develop (
develop
) is deployed at develop.archit.us
- Production (
- FOSSA - Used to scan dependencies and perform license compliance
- UptimeRobot - Used to track uptime and notify upon outage for the websites and the API