Reading time: 5-10 mins
Technicality: 4/5
Last updated: Jan 20, 2025
As designs are being completed, the development team can prepare the codebase to ensure a smooth start to feature development.
A solid foundation makes development easier and more efficient. Since early stages often come with uncertainties, the codebase needs to be flexible enough to adapt as requirements evolve.
We're using TypeScript/JavaScript, a strong choice thanks to its flexibility, rich ecosystem, and support for both frontend and backend development.
A monorepo will help manage multiple packages efficiently in a single repository. This setup ensures consistency, simplifies dependency management, and improves collaboration.
@repo/typescript-config
Getting translations in place from the start has several benefits:
Translation package is now set up in @repo/translation
with mock content. View changes on GitHub
To convert TypeScript into JavaScript modules, we’ve configured tsup
for different environments in @repo/tsup-config
.
The UI library will include reusable components like buttons, inputs, and typography, along with theming for colours, spacing, and fonts. TailwindCSS will handle styling, Storybook will help with component previews, and Vitest will cover testing.
Initial setup includes:
@repo/vitest-presets
@repo/ui
The tasklist application is being built with:
README files have been added to each package, explaining their purpose, commands, and usage guidelines.
The final state of the code for initialising the monorepo can be found here: GitHub link
Tasks and subtasks for this setup are listed on our ClickUp board.
All key project documentation is available in our ClickUp wiki.
In the meantime, the app wireframes are completed (see previous post), user stories to implement features are underway, and we are synchronously implementing the design system with theme and components as they come from the design team.
After the design components are implemented, we can synchronously work together with the design team on the user stories:
For preparation of the upcoming work, we will set up a "local database" with basic actions, imitating an API to make the components interactive. Also, to be able to work on the independent stories in parallel, we will initialise the components so dependencies don't block each other (like how creating the task list component is depending on the task component).
Here's how our timeline look like now: