Skip to main content

Coding and Design Guidelines

Welcome to the Artemis Coding and Design Guidelines. These guidelines help maintain code quality, consistency, and best practices across the project.

Client Guidelines

Guidelines for Angular/TypeScript frontend development:

  • Client Development - Angular development practices, naming conventions, components, and advanced topics
  • Client Theming - Theme management, color usage, and styling guidelines
  • Client Tests - Testing practices, mocking strategies, and coverage standards

Server Guidelines

Guidelines for Spring Boot/Java backend development:

  • Server Development - Java best practices, project structure, REST APIs, and authorization
  • REST API - REST API design, Data Transfer Objects (DTOs), and API best practices
  • Server Tests - Server testing strategies, ArchUnit, and performance tips
  • Database - Database design, relationships, cascade types, and dynamic fetching
  • Performance - Performance optimization, data economy, paging, and query optimization
  • Criteria Builder - Type-safe dynamic queries using JPA Criteria API

General Guidelines

  • Language - Inclusive, diversity-sensitive, and appreciative language guidelines

Key Principles

Getting Started

If you're new to Artemis development:

  1. Start with the Client Development or Server Development guidelines based on your work focus
  2. Review the Testing guidelines to understand our testing standards
  3. Familiarize yourself with Database guidelines for data modeling
  4. Check the Language guidelines for inclusive communication

Contributing

When contributing to Artemis:

  • Follow the style guides and conventions outlined in these documents
  • Ensure your code passes all linting and formatting checks
  • Write tests for new functionality
  • Document your code appropriately
  • Review related guidelines before making changes

Questions?

If you have questions about these guidelines or need clarification:

  • Check the specific guideline page for detailed information
  • Ask in the development team channels
  • Consult with maintainers or experienced contributors