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 and TypeScript client development:

Server Guidelines​

Guidelines for Spring Boot and Java server 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
  • WebSocket Topics - Declared topics, access rules, and sending and receiving messages
  • Server Tests - Server testing strategies, ArchUnit, and performance tips
  • Database - Database design, relationships, cascade types, and dynamic fetching
  • Entity Ownership - What every entity belongs to, and where the schema still permits an orphan
  • Migration Consolidation - Folding a release cycle's Liquibase changelogs into the initial schema, done once per major version
  • Caching - When a cache is justified, what it may hold, and how it is evicted across nodes
  • Distributed Data - Cross-node state through the DistributedDataProvider, and the Hazelcast, Redis and Local providers
  • Performance - Performance optimization, data economy, paging, and query optimization
  • Criteria Builder - Type-safe dynamic queries using JPA Criteria API

General Guidelines​

  • Dead Code - The dead-code gates for the server and the client, and how to resolve a finding
  • Documentation - Structuring a documentation page, naming what the reader sees on screen, and keeping screenshots and screencasts current
  • Language - Inclusive, diversity-sensitive, and appreciative language guidelines
  • Terminology - Naming components precisely, and the two vague layer words Artemis does not use
Search documentation