Full Disclosure

This café doesn't exist.

No storefront. No beans. No baristas. What is real: a full commerce, staking, and settlement stack, engineered as if the café were.

> a fictional cafeteria · real engineering

The Fiction

Brewed from scratch, minus the coffee.

There is no address, no lease, no espresso machine. What exists is a production-shaped playground: a real database, a real message queue, a real smart contract on a real (test) chain — orbiting an imaginary counter that never actually pulls a shot.

The café is the excuse. The point was to build something end-to-end and honest about what it is: not a startup, not a product — a complete system, done properly, for its own sake.

The Recipe

How it's built.

  1. 01 · DOMAIN

    Entities and enums — the vocabulary of the café.

  2. 02 · APPLICATION

    Services, DTOs, validation — the recipes.

  3. 03 · INFRASTRUCTURE

    EF Core on PostgreSQL, plus Azure storage, messaging, and email.

  4. 04 · WEB

    Blazor Web App on .NET 10, rendered interactively — the counter.

  5. 05 · WORKER

    A background service consuming order-processing messages — the back room.

dotnet 10 · blazor server · clean architecture · xunit + testcontainers

The Yield

Interest, freshly ground.

One Solidity contract, CafeStakingPool, runs the loyalty program on Sepolia. Stake CAFE, accrue COFFEE by the second, claim whenever you like.

stake()

Tokens move into the pool, guarded against re-entrancy.

rewardPerToken()

An owner-set annual rate, in basis points, accrues per second against total staked.

claimRewards()

Pending COFFEE transfers out. No lock-up — unstake anytime.

0

% On-chain · Sepolia

0

Days locked · unstake anytime

0

Pool contract · CafeStakingPool

Testnet only — the tokens are as real as the café.

See the yield

The Pour

Served from the cloud.

$ git push origin main

→ github actions · docker build

→ push · azure container registry

→ deploy · azure container apps

✓ live at cafe.alexisreyna.dev

Container Apps

Consumption plan, running the Blazor app and the worker.

Postgres Flexible Server

The system of record, via EF Core.

Service Bus

Order-processing queue, consumed by the Worker.

Key Vault

Secrets and connection strings, never in source.

Blob Storage

Product imagery and static assets.

Communication Email

Order confirmations and account emails.

0 Bicep modules provisioning the estate

Fictional coffee. Real craft.

Shop the beans Read the source
An unhandled error has occurred. Reload x

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.