Engineering Practices at Open Government Products
This directory contains the engineering practices that are observed at the Open Government Products division of the Singapore Government.
This repository is intended to be a living, breathing document that evolves as the organisation grows. All OGP engineers are welcome to make contributions or propose changes, by filing a pull request using the Request For Comment (RFC) template available in this repository.
Practices are currently in place for the following areas:
Developer Environment
- Laptop policy
- Google Groups
- Passwords and credentials
- IDE
Source Control
- Branching
- Pre-Commit Checks
- Linting
- Secrets
- Checks during Continuous Integration
- Secrets
- Security
- Code Review Processes
Coding
-
Backend
- RESTful API routing organisation
- Using Object Relational Mappers (ORMs)
-
Frontend
- Template Screens
- State Management
-
Testing
- Unit
- Integration
- End-to-End
-
Libraries and tools
- @opengovsg/mockpass - mock SingPass/CorpPass/MyInfo server for dev purposes
- @opengovsg/sgid-client - official TypeScript/JavaScript SDK for sgID integration
- @opengovsg/myinfo-gov-client - type-safe TypeScript/JavaScript SDK for MyInfo integration
- @opengovsg/formsg-sdk - official FormSG webhook SDK
Deployments
- Using CI/CD
- Release practices
- Deploying to AWS, Step-by-Step
- Organising and Naming Environments
- Hosting
- Scaling
- Infrastructure guide
- Domain Name Service (DNS)
- Content Delivery Service (CDN)
- Databases
- Load Balancing
- Backup guide
- Production guide
Monitoring and Incident Response
- Monitoring and alerting
- Incident response and on-calls
- Lighthouse for QC'ing Web Pages
Security
Project maintenance
Useful starter code templates
- ts-template - Web application template
- ts-job-template - Scheduled batch jobs that execute on AWS Elastic Container Service
Marketing and Engagement
- Zendesk
Policy exemptions
See here.