Software ProductCommercial Release Candidate1.0.0-rc.1

A modern foundation for self-hosted vehicle marketplaces

Self-hosted vehicle marketplace platform

AutoCore brings the public marketplace, dealer operations, administration, APIs, search, media processing, installation, and lifecycle operations into one configurable system.

Commercial distribution is being prepared.

AutoCore marketplace homepage with search and trending brands, shown on desktop

At a glance

Category

Software Product / Automotive Marketplace

Type

Self-hosted marketplace platform

Version

1.0.0-rc.1 · Release Candidate

Status

Commercial Release Candidate

Year

2026

Role

Product design, architecture, development, operations

Overview

What AutoCore is

AutoCore is a vehicle marketplace platform that an operator installs and runs on their own infrastructure. It is not a hosted service and not a template: it is a complete system with a public marketplace, a dealer and seller model, an administration surface, a versioned API, background processing, and the installation and lifecycle tooling needed to keep an instance running.

The product exists because building a credible vehicle marketplace repeatedly means rebuilding the same foundations — catalog structure, listing states, moderation, media handling, search projection, and the legal and consent records a real marketplace needs. AutoCore packages those foundations as a configurable core rather than a one-off build.

It is aimed at marketplace operators, agencies delivering a marketplace for a client, and technical teams who want to own their data and deployment rather than rent them.

Origin

The engineering objective

The starting constraint was that nothing about a single city or country should be hardcoded. Currency, locale, timezone, distance units, address and phone formatting, and the location hierarchy are configuration, not assumptions baked into the code.

The second constraint was that the platform should be able to produce branded editions from one canonical source. EskişehirAraba was built from that same core, which forced the branding, localization, and market boundaries to be genuinely separable rather than theoretical.

The third was operational clarity: each installation serves one primary market. That is a deliberate boundary. It keeps pricing, units, moderation, and legal policy unambiguous, and it avoids shipping a half-finished multi-market abstraction that would complicate every query and every screen.

Engineering outcomes

Verified at release-candidate stage

Each figure was re-derived from the release-candidate source rather than carried over from earlier notes.

  • 4Application surfacesWeb, Admin, API, Worker
  • 59API controller classesGrouped by business domain
  • 403Endpoint methodsSource-audited across 59 controllers
  • 85Public OpenAPI pathsSanitized public artifact
  • 56Public OpenAPI schemasShared request and response shapes
  • 264Documentation pagesPublished product documentation
  • 34Database migrationsVersioned schema history
  • 1Primary market per installationA deliberate operational boundary

Capabilities

What the platform covers

Search and filtering

Faceted search over listings with brand, model, price, year, mileage, fuel type, and transmission filters.

Vehicle catalog

Categories, brands, models, generations, and trims with structured equipment and lookup attributes.

Listing lifecycle

Eight explicit listing states from draft through moderation to archive, each with defined visibility.

Users and sellers

Individual sellers and dealer organizations with roles, permissions, and resource ownership.

Dealers and memberships

Dealer profiles, member roles, verification states, and storefront pages.

Moderation

Review queues for listings and reports, with recorded decisions and audit history.

Media processing

Background image processing with derived variants, checksums, and explicit processing states.

Legal and consent

Versioned policy revisions, acceptance records, and consent receipts kept as first-class data.

Payment readiness

Provider configuration, verification state, and webhook handling — inactive until explicitly enabled.

System health

Operational surfaces for installation status, background processing, and search health.

Public marketplace

The buyer-facing experience

The public surface handles discovery, comparison, and contact. Formatting follows the configured market, so prices, distances, and locations read correctly for the installation.

AutoCore search results page with a filter sidebar and a grid of vehicle listings
Faceted filtering by category, price, year, mileage, and fuel type with live result counts.
AutoCore search results on a mobile viewport showing stacked listing cards
Listing cards keep specifications, seller type, and location at small widths.

The demo runs on synthetic sample data.

Sellers and dealers

Two seller models, one listing model

Individual sellers and dealer organizations share the same listing pipeline. What differs is ownership, membership, and the storefront a dealer gets.

AutoCore dealer storefront page showing a cover image, specialties, and listing count
A dealer profile with specialties, active listing count, and business status.

Administration

Operating the marketplace

Administration is a separate application with its own surfaces for the people running the marketplace day to day.

  • User and dealer management with role and permission assignment.
  • Vehicle catalog management: categories, brands, models, and trims.
  • Listing moderation queue and decision history.
  • Media review and processing-state visibility.
  • Search operations and reindexing.
  • Legal Center, Consent Center, and Payment Center surfaces.
  • Audit history and system health.

Market model

One primary market per installation

The market is configuration. The boundary is deliberate.

  • Country, region, and city define where the marketplace operates.
  • Locale and currency drive formatting and pricing presentation.
  • Timezone and distance unit (km or mi) are configured per installation.
  • Address and phone formatting follow configurable presets.
  • Market vehicle capabilities decide which categories are offered.
  • Austin is the demo preset; Berlin was used to validate a non-US installation; Eskişehir is a materialized edition.

Catalog and lifecycle

From draft to archive

Every listing moves through explicit states, and each state determines search visibility.

Diagram: listing lifecycle from draft through moderation to active, sold, expired, and archived
Every listing moves through explicit states, and each state determines search visibility.
  • draft — created but not submitted
  • pending_review — awaiting moderation
  • active — publicly visible and searchable
  • reserved — held for a buyer
  • sold — closed as sold
  • expired — past its active window
  • rejected — declined in moderation
  • archived — withdrawn from the marketplace

Media and search

Authoritative state, derived projection

Search and media are built so that neither can quietly become the system of record.

  • PostgreSQL is the authoritative transactional store for every business record.
  • Meilisearch holds a derived projection of listing data used for search.
  • Redis supports transient coordination and background processing.
  • Media assets record ownership, dimensions, checksums, and derived variants.
  • Image processing runs in the Worker, outside the request path.
  • Search state can be rebuilt from PostgreSQL; it is never the source of truth.

Legal, consent, payments

Recorded, not assumed

These capabilities give an operator the records they need. They are tooling, not compliance.

Diagram: policy revision lifecycle from draft to publication and acceptance
These capabilities give an operator the records they need. They are tooling, not compliance.
  • Policies are stored as versioned revisions with an explicit publication step.
  • Acceptance records link a user to the exact policy revision they accepted.
  • Consent receipts separate necessary processing from optional processing.
  • Payment providers are configured per installation and disabled by default.
  • Provider configuration carries an explicit verification state.
  • Webhook handling records processing status rather than assuming success.

These features do not constitute legal certification and do not automatically activate payment providers. Policy content, regulatory obligations, and provider agreements remain the operator's responsibility.

Architecture

Four surfaces, clear boundaries

Web and Admin are clients. The API owns business logic and PostgreSQL state. The Worker handles bounded background jobs.

Diagram: public clients reach Web or Admin, which call the versioned API, which owns PostgreSQL and coordinates Redis, Meilisearch, and the Worker
Web and Admin are clients. The API owns business logic and PostgreSQL state. The Worker handles bounded background jobs.

Technology

The stack in use

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • TanStack Query
  • React Hook Form
  • Zod

Backend

  • NestJS
  • TypeScript
  • Prisma
  • PostgreSQL
  • Redis
  • Meilisearch

Infrastructure

  • Docker
  • Nginx
  • Cloudflare
  • GitHub Actions
  • Immutable release artifacts

Quality

  • Vitest
  • Playwright
  • Accessibility testing
  • Contract validation
  • Dependency audits

API

API-first, with a sanitized public contract

Clients are consumers of a versioned contract, and the published artifact is a filtered view of it.

  • Business logic lives in the API; Web and Admin are clients of the same versioned contract.
  • Authentication and permission checks are enforced at the API boundary.
  • Resource ownership is verified per request, not inferred from the client.
  • Responses use a consistent error envelope and request identifiers.
  • List endpoints share a common pagination contract.
  • The published OpenAPI artifact is sanitized: operator-sensitive and internal-only routes are excluded.
  • The 403 audited handler methods span every visibility class; the sanitized public artifact publishes 85 paths.
85 paths56 schemasOpenAPI 3.0
Explore API

Installation

Installing and operating an instance

Installation is treated as a product surface, not a README.

Diagram: installation lifecycle from preflight through installation to verification
Installation is treated as a product surface, not a README.
Diagram: upgrade and rollback decision flow
Stated as boundaries that are actually enforced, rather than as adjectives.
  • A guided installer with preflight checks before anything is written.
  • Installation locking so a second run cannot corrupt a partial install.
  • Idempotent steps that can be safely re-entered after an interruption.
  • First administrator creation and primary-market initialization.
  • An installation manifest recording what was installed and when.
  • doctor, status, upgrade, and backup verification commands for ongoing operation.

Reliability

Security and operational boundaries

Stated as boundaries that are actually enforced, rather than as adjectives.

  • Role and permission enforcement at the API boundary.
  • Resource ownership checks on every scoped operation.
  • Secrets are referenced by environment, never committed to source.
  • Releases reference immutable image digests rather than mutable tags.
  • Manifests and checksums establish artifact lineage.
  • Backups are verified rather than assumed.

Documentation

Documentation as part of the product

The documentation was written against the release-candidate source and validated against the published routes. It covers installation, administration, operations, troubleshooting, security, and recovery.

AutoCore OpenAPI publication page in the documentation site, showing the release-candidate version badge
The OpenAPI publication page, including the sanitization boundary for the public artifact.

264

public documentation pages

Read Documentation

Product

The product in use

Editions

EskişehirAraba, built from the same core

EskişehirAraba is a materialized marketplace edition produced from the AutoCore core. It validated branding, localization, market configuration, and operational separation in a live setting. It does not mean the platform is limited to one city or one country.

AutoCoreEskişehirAraba

Status

Where the product stands

Version
1.0.0-rc.1
Status
Commercial Release Candidate
Deployment
Self-hosted
Primary market
One per installation
Native mobile app
Not included
Payments
Integration-ready, disabled by default
Commercial distribution
In preparation

Explore

Explore the system

The demo, the documentation, and the public API contract are all open to review.

Commercial distribution is being prepared.