# Standardized Tech Stack

To ensure consistent development quality, maintainability, and smooth onboarding, all Blueprint projects use the following standardized tech Stack.

#### Frontend Stack

<table border="1" id="bkmrk-component-docs-react" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0618%;"></col><col style="width: 50.0618%;"></col></colgroup><tbody><tr><td>**Component**  
</td><td>**Docs**  
</td></tr><tr><td>React</td><td>[https://react.dev/](https://react.dev/)

</td></tr><tr><td>TypeScript</td><td>[https://www.typescriptlang.org/docs/](https://www.typescriptlang.org/docs/)

</td></tr><tr><td>Vite</td><td>[https://vitejs.dev/guide/](https://vitejs.dev/guide/)

</td></tr><tr><td>TailwindCSS</td><td>[https://tailwindcss.com/docs](https://tailwindcss.com/docs)

</td></tr></tbody></table>

##### Frontend Best Practices

- Use functional components + hooks only
- Use Zod for input validation
- Always type props and state - do not default to any
- Keep styling with Tailwind utility classes; avoid writing custom CSS unless necessary

#### Backend Stack

Projects use one of:

##### Option A: Java + Spring Boot

- [Sprint Boot](https://spring.io/projects/spring-boot)
- [Spring Data JPA](https://spring.io/projects/spring-data-jpa)

##### Best practices

- Use layered architecture: controler -&gt; service -&gt; repository
- Use DTOs to avoid returning raw database entities
- Prefer Postgres types (UUIDs over integers for IDs