Conduit
Main purpose of this projects is to have personal extensive API training on multiple backend languages or framework. It’s following the very known Conduit project, a Medium clone. Each project respect following conditions :
VS Codeas only main editor !- 100% compatible by the official OpenAPI Spec
- Proper OpenAPI documentation
- Testable with last Postman collection of Conduit
- Fully tested
- High QA by following best practices for linting, formatting, with static analyzers for non strongly typed languages
- Community-driven with usage of the most well-known packages
PostgreSQLas main databases- Use ORM whenever possible that follows any
DataMapperorActive Recordpatterns - Proper seeder / faker for quick starting with filled DB
- Separated RW / RO database connections for maximizing performance between these 2 contexts
- Proper suited QA + production Dockerfile
- Complete CI on Kubernetes with Concourse CI
- Automatic CD on Kubernetes using Flux
Conduit Frontend
Instead of using outdated Bootstrap v4 alpha 2 theme, I rewrite it on UnoCSS, an awesome efficient Tailwind-like utility-first CSS framework, with Dark Mode support.
For API communication, as we have full proper OpenAPI spec, it’s a real benefit to have a generated Typescript client for full autocompletion feature. The well known OpenAPI Generator is okay for this task but generate massive amount of code as it generates a complete client SDK.
Thankfully this openapi-typescript package is a for more lightweight solution. It simply translates the OpenAPI spec to a simple Typescript file, with only types. No code generation involved ! In order to work, we need to use a specific fetch tool which will use all advanced features of Typescript 4 in order to guess type all the API with only a single TS file in runtime !
Common packages involved :
- Vite as main bundler
- ESLint with Prettier for linting and code formatting
- Iconify as universal icons
- TanStack Query, compatible with
VueandReactfor nice API communication and powerful caching system
To sum up, at the time of Vue 2 (Options API) and React <16.8 (class components), it was a complete different DX and each framework have their own unique way to develop components. But now with Composition API and React Hooks, the gap is much smaller and became just a matter of taste, JSX vs Vue template, tooling, community, etc.
React TS Realworld
React 19 TS implementation. It uses only pure function components thanks to React Hooks, which can be more or less related to Vue 3 Composition API.
It uses React Context as minimalistic store system, without extra complexity from external libraries like Redux or MobX.
Additional packages :
- Generouted, file based routing system with layout support, compatible with Vite
Compared to Vue implementation, it seems a bit less magical and more explicit, as it likes for Symfony VS Laravel. Don’t require heavy Typescript IDE tooling like Volar, because it’s just pure TS function components.
Vue 3 TS Realworld
Vue 3.5 TS implementation written with Composition API. Main packages involved :
- Pinia as main store system
- vue-tsc as main TS checker and compiler for Vue components, with full VS Code support with Volar plugin
- VueUse for many composition function helpers
Additional packages that reduce boilerplate and improve DX :
- unplugin-auto-import and unplugin-vue-components for reactivity functions and components auto import, while preserving TS support
- vite-plugin-pages and vite-plugin-vue-layouts for file-based route system with layout support, preventing us maintenance of separated route file, which made the DX similar to Nuxt
Conduit Backend
Not less than 6 different backend implementations using best practices on C#, Java, PHP, Python, Typescript, highly up to date, with complete integrated automated tests suite.
ASP.NET Core Realworld
ASP.NET Core 10 implementation, using minimal APIs, following DDD principle, implemented with Hexa architecture and CQRS pattern. Swashbuckle is used as default Swagger UI, while keeping native Microsoft OpenAPI.
Main packages involved :
- EF Core as strongly typed ORM
- Fluent Validation for strongly typed validation
- dotnet-format as official formatter
- xUnit.net as framework test
- Bogus for strongly typed fake data generator
Spring Boot Realworld
Spring Boot 4 implementation using Gradle 9 & Java 25. Similar to the official Spring Boot implementation but with usage of Spring Data JPA instead of MyBatis. Here is another nice one that explicitly follows DDD.
Main packages involved :
- springdoc-openapi as API documentation generator
- Java JWT as JWT implementation
- Spring Data JPA with Hibernate as default JPA implementation
- Flyway as proper migration tool based on SQL language as first party
- Lombok for less boring POO encapsulation boilerplate
JUnit 5with REST Assured for fluent API assertions- Spotless Formatter with proper
Vs Codeintegration - Java Faker as fake data generator
Symfony Realworld
Symfony 8 implementation on PHP 8.5 that supports PHP 8 attributes, using API Platform.
Contrary to Laravel, the usage of DataMapper pattern ORM involve classic POPO models. The additional usage of plain PHP DTO classes facilitates the OpenAPI spec models generation without writing all schemas by hand. On the downside the Nelmio package is far more verbose than the Laravel OpenAPI version.
Main packages involved :
- API Platform as API framework
- Doctrine as DataMapper ORM
- FOSRestBundle only for some helpers as DTO automatic converters and validation
- NelmioApiDocBundle as OpenAPI generator
- Symfony JWT Bundle implementation
- Alice as fixtures generator that relies on PHP Faker
- PHP CS Fixer as formatter
- PHPStan, as advanced code static analyzer
- PHPUnit as test framework
Laravel Realworld
Laravel 12 implementation on PHP 8.5 with extensive usage of last attributes support. The particularity of this framework is to give you almost of all you need for quickly develop any complex application. So minimal external packages need.
I obviously made usage of Eloquent as a very expressive Active Record ORM, and the Laravel factories system based on PHP Faker is already perfect for dummy data generator.
Contrary to most others projects, there is no usage of DTO classes, so it’s required to write all schema declarations for proper OpenAPI models generation.
Main packages involved :
- PHP JWT as JWT implementation, with proper integration to Laravel using custom guard
- Laravel Routes Attribute for Laravel routing that leverage on last PHP 8 attributes feature
- Laravel OpenAPI that also use PHP 8 attributes for API documentation
- Laravel IDE Helper for proper IDE integration, perfectly suited for VS Code with Intelephense extension
- Larastan, a Laravel wrapper of PHPStan, as advanced code static analyzer
- Pest 2 as nice Jest-like API superset of existing PHPUnit
NestJS Realworld
NestJS 11 implementation under Node.js 24 using Typescript and pnpm as fast package manager. It relies by default on fastify as NodeJS HTTP server implementation. NestJS offers a nice OpenAPI documentation generator thanks to Typescript which provides strong typing.
Main packages involved :
FastAPI Realworld
FastAPI implementation under last Python 3.14 with Poetry as package manager.
It’s based on pydantic, an essential component that allows proper OpenAPI generation and data validations while bringing advanced type hints.
Main packages involved :
- Pydantic 2, for any data validation
- SQLAlchemy 2 with Alembic for schema migration
- python-jose as JWT implementation
- Faker as dummy data generator
- Ruff as extremely fast linter and code formatter written in rust, a perfect drop-in replacement for flake8, isort and black
- mypy as advanced static analyzer
- pytest as main test framework