📄 General technical documentation: https://github.com/usequatro/quatro-docs
In 2022, Quatro's team decided to stop the project. Check out this blog post to learn more: What a B2B PM Learned About Building Consumer Products.
If you have a technical question or want to contribute, feel free to open an issue.
This project was bootstrapped with Create React App. All code can be found in /src
.
Libraries used:
- React.
- Redux for global state management (imeplement with Redux Toolkit)
- Material-UI for UI components and styling.
- Firebase
- Firestore for listening and persisting updates in realtime. Watch this tutorial.
- Hosting for serving the web client and its build assets.
- Functions for serverless backend functionality. See the functions repository.
- Storage for profile pictures.
- React Router for navigation.
- Date-fns for date and time manipulation.
Integrations of the frontend:
- Google Calendar API
While the dev Firebase project is still up and running, anybody should be able to clone this repository and play with it in their localhost. You can also create your own Firebase project with the services mentioned above, and configuring your .env.local
variables.
- Clone the repo.
- Clone the file
.env.development
into.env.local
and adapt it as needed, e.g., remove the Mixpanel ID to disable tracking. - Run
npm install
- Run
npm run start
. (For HTTPS, needed in some edge cases, runHTTPS=true npm run start
)
For linting and formatting, make sure you have ESLint and Prettier enabled on your code editor.
To work with your Firebase instance, use its CLI to toggle between them with firebase use [env]
. Check active environment with firebase use
.
On Google Cloud Platform, the Quatro dev project isn't verified, according to Google's policy, because it's for testing purposes. That means that to connect Quatro to Google Calendar, we need to add your email address to the list of Test Users within the Google Cloud Platform project. Feel free to open an issue asking for it, or hit me directly via social networks. If there's a way around this that we don't know, please let us know!
Continuous deployment is wired with GitHub Actions:
- Merging into
main
orrelease/*
branches will trigger a deploy to https://dev.usequatro.com with.env.development
variables. - Tagging with
vX.X.X
will trigger a deploy to https://app.usequatro.com with.env
variables. Use GitHub Releases to produce the tag and release documentation.
For more details, see the workflows folder.
The FIREBASE_TOKEN
is a refresh token generated with the Firebase CLI, via firebase login:ci
, and stored as a GitHub secret to Actions can use it. Renewing it will be necessary sometimes.
There's a slack integration configured (see notifyDeploy.sh) to notify the Quatro #deploys channel in Slack.
We use GitHub Releases to document release notes, as well as triggering a new version deployment.
- Go to the GitHub Releases page.
- Click "Draft a new release".
- Set a tag version 1 number above the last tag. Use patch increases for bug fixes and improvements, and minor increases for new features. Major increases are only for visually major changes that mean "a new Quatro".
- Summarize the changes in the Release title
- Add bullet points for all changes in the release and links to their pull requests in the description. Example.
First, make sure you have an .env
file. This file contains production environment variables. Ask another contributor for a copy.
npm run build-and-deploy