This document is the core repository for standards and guidelines specific to software development at Symph. It sets forth the criteria and practices that govern our software development processes, ensuring consistency, quality, and efficiency across all projects. These standards apply to every member of our development teams, including full-time staff, contractors, and partners.
Compliance with these standards is mandatory for all software development activities within Symph. Exceptions to these standards can only be made through a formal review and approval process aligned with Symph's architectural governance framework.
The development practices at Symph are grounded in a set of core principles, as outlined below:
- Symph Principles Overview: A foundation that guides our approach to software development, emphasizing innovation, quality, and collaboration.
- Coding Principles: Best practices and methodologies for writing clean, efficient, and maintainable code.
- Security Principles: Guidelines to ensure the development of secure applications and protection of data against threats.
The following standards are essential for maintaining the high quality of software development at Symph:
- Coding Standards: Practices and conventions for writing code, including:
- TypeScript Standards: Best practices and conventions for TypeScript development to ensure type safety and code scalability.
- Next.js Standards: Guidelines for building server-rendered or statically generated web applications using Next.js.
- NestJS Standards: Standards for developing efficient, reliable, and scalable server-side applications with NestJS.
- React Native Standards: Best practices for developing cross-platform mobile applications using React Native.
- APIs/Backend/DB Naming Standards: Guidelines for naming conventions in APIs, backend services, and databases to ensure consistency and clarity across the codebase.
- Security Standards: Protocols and practices to safeguard our software from vulnerabilities and attacks.
- API Security Standards: Protocols and practices to safeguard our API from vulnerabilities and attacks.
- Version Control Standards: Guidelines for using version control systems effectively to track and manage changes to the codebase.
- Cloud Architecture Defaults: Outlines the recommended configurations and practices for cloud-based services to ensure optimal security, scalability, and efficiency in line with industry best practices.
- README Standards: Best practices for creating informative and concise README files to accompany and document software projects.
- REST API Standards: Outlines our standardized REST API guidelines for building efficient and reliable services to ensure seamless integration and maintainability across our ecosystem.
The Symph tech stack encompasses a wide range of technologies and tools that power our software solutions. Below is a visual representation of the tech stack:
- Storage: Cloud SQL, Supabase, MySQL, PostgreSQL, Firebase, Azure DB, Firestore.
- API: NestJS, Express, TypeORM, Nx, Swagger, API Lib Builder.
- Frontend: Next.js, Svelte, Flutter, React Native.
- DevOps: App Engine, Cloud Run, GitHub, Cloud Build.
- Error and Log Monitoring: Sentry, Google Cloud Logging.
- Code Quality Checks: Sonar Check, Peer Code Review.
This tech stack allows Symph to deliver high-quality, scalable, and maintainable software solutions across various domains and platforms. We maximize proven frameworks for both the backend and frontend and uses Swagger to generate an OpenAPI spec for communication between both. This means that when something changes in the APIs present in the backend, it automatically gets generated to a working API client that the frontend can use including types and parameters and thus makes it easier to interact APIs present in the backend.
Nx as a smart monorepo tool ties everything together for reusability and ease of setup for the project. Through NX smart libraries, we can share code across multiple applications of the same project domain. All shareable components, functions, types and classes are in the libs
folder at the project's root, readily available for importing.
Symph has adopted an open source license for these engineering standards. This decision underscores our commitment to transparency, collaboration, and the free exchange of ideas within the global software development community.
By utilizing an open source license, we encourage the adaptation, sharing, and improvement of our standards by developers and organizations worldwide. This collaborative approach not only enriches our own standards but also contributes to the broader software development ecosystem.
Open source licenses are designed to allow for the free distribution and modification of software's source code. This approach fosters a community-driven development process where innovations are shared freely, enabling others to contribute improvements and variations back to the community.