# Welcome This is the onboarding checklist for a new frontend engineer. Follow the general checklist first, and then the team specific set-up you're in. It may serve as your go-to reference during the first few weeks in ProtonMail. Previous onboarding doc: http://socrates.io/#48HuXfp may have outdated info, but includes some useful additional contact information, so check it too after completing this list. ## General Checklist It is best to follow this in top-to-bottom order and make sure the step is completed before moving to the next one. - [ ] Create your protonmail account: https://beta.protonmail.com/ - [ ] Join slack https://protonmail.slack.com (@Sam K. will send an invite) - Add profile picture and description - Join `#general` `#security-public` `#proton-group` and your team channels - [ ] Setup dev VPN (@Sam K. will send configs) - [ ] Create a GitLab account to access: https://gitlab.protontech.ch/ (@Sam K. will send instructions) - [ ] Create GitHub account or use existing to join ProtonMail organization (@Sam K. or @richard will send invite) - [ ] Set up your development environment: - Preferred code editor (VSCode or WebStorm recommended) - OpenVPN configuration to access dev VPN (if not yet done) - Node LTS ([nvm](https://github.com/nvm-sh/nvm) or [n](https://github.com/tj/n)) - Git (also add SSH keys to GitHub and GitLab) - Additional recommended setup for __windows__ https://github.com/ProtonMail/proton-shared/wiki/setup-windows#navigate-to-windows-directory-using-wsl - Set up projects (see next section) - [ ] Set up your company profile on https://cake.hr/ (@Vija can give you access) - [ ] Check your access to https://ipa.protontech.ch/ipa/ui/ (@Sam K. will grant it) ### Project setup Most of these steps are "do-once-never-again": 1. (Optional) Clone shared projects from GitLab: `react-components`, `proton-shared` and `design-system` 2. Clone team project (e.g. `proton-drive`) and run `npm i` on it. 3. Clone [proton-config](https://gitlab.protontech.ch/web/core/proton-config) and follow instructions to generate configs for your project. 4. (Optional) Link local shared projects to use for your project instead of published versions: - Go to _every_ shared project and run `npm link` - Go to your team project and run `npm link --no-save <module_name>`, e.g. `npm link --no-save react-components`. This will work until you install packages next time. - To go back to using published versions run `npm unlink --no-save <module_name>` or `rm -rf node_modules && npm i` in your team project. 5. You can start projects for internal APIs with `npm run start -- --api=<internal_api>`, e.g. `npm run start -- --api=blue` ### Important info - Frontend meeting is every Monday 11:15AM __Vilnius__ time - All accounts must be two-factor-auth protected: - ProtonMail - GitHub - GitLab (.ch and .com too if access to organization is granted) - Slack - All projects are private on GitLab, code is pushed there. Frontend repositories are mirror-only on GitHub. - Accessing GitLab and internal development APIs requires dev VPN, make sure to set it up and start it if you can't access them. - Most frontend projects use `dev` API by default. It uses the production database. There are internal QA & development APIs you can use that use another database, e.g. `blue`. - Deployment info is covered in [wiki](https://gitlab.protontech.ch/web/core/wiki-app-v4/-/wikis/how-to-deploy-prod-beta-etc) ### Tips - __ProtonMail employees can get a visionary account!__ Message _@violeta_ (or someone from support if she's busy) in slack, and ask to whitelist you for PMTEAM coupon. Then add it in ProtonMail by selecting Visionary plan in dashboard and in payment popup click "_add coupon_", enter PMTEAM. ### Resources & Links - A lot of important info can be found in wiki: https://gitlab.protontech.ch/web/core/wiki-app-v4 - Frontend repos: https://gitlab.protontech.ch/web - VoIP for corporate calls: https://www.uberconference.com/protonmail (pass: 09976) - Vilnius bookings: https://protonvilnius.skedda.com/booking ## ProtonDrive Setup 1. Clone the repo and follow the standard setup like described above: https://gitlab.protontech.ch/web/drive/proton-drive 2. Make sure you have access to the Jira board: https://jira.protontech.ch/projects/DRV 3. Make sure you have access to Zeplin: https://app.zeplin.io/project/5dcaa5136048e48f3880b6fe 4. Make sure you have access to Confluence: https://confluence.protontech.ch/display/DRV/ProtonDrive 5. Join drive slack channels: `#drive` `#drive-qa` `#drive-standups` `#drive-ceremonies-private` and others if needed starting with "drive" ### Important info - Status is reported on Wednesdays in `#drive-standups` - Sprint duration is 2 weeks. - Retro meetings are usually every other Wednesday 2PM, and planning 3PM __Vilnius__ time. - Sprint demo is at 5PM __Vilnius__ time every other Tuesday.