Do not miss your favorite peddler again! https://campanita.juanmanzanero.com
  • HTML 79.2%
  • TypeScript 14.7%
  • Rust 5.6%
  • CSS 0.3%
  • Shell 0.2%
Find a file
2026-08-24 14:05:56 -06:00
apps refine geopoint 2026-08-24 14:05:56 -06:00
packages/backend-types fix location type 2026-08-24 13:54:03 -06:00
.env.example add deploy script, fix backend bad queries, frontend fixes 2026-08-21 12:55:29 -06:00
.gitignore add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00
deploy.sh add deploy script, fix backend bad queries, frontend fixes 2026-08-21 12:55:29 -06:00
LICENSE add license and readme 2026-08-21 15:09:47 -06:00
orval.config.ts add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00
package.json add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00
pnpm-lock.yaml add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00
pnpm-workspace.yaml add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00
readme.md update readme and add source code link 2026-08-21 15:19:14 -06:00
tsconfig.json add openapi swagger and auto generate types from backend, implement in frontend, remove unused types and update types usage 2026-08-24 13:32:19 -06:00

campanita.app

Do not miss your favorite peddler again!

Early Alpha: https://campanita.juanmanzanero.com

What is Campanita?

Campanita connects street peddlers with customers in real-time. Peddlers share their live location on a map, customers see them nearby and request a visit, and peddlers accept or reject in seconds. No more missed snack vendors.

Current Features

  • User registration with automatic username generation
  • Peddler profiles (name, description, category)
  • Live location sharing for peddlers
  • Map view to discover nearby peddlers

Roadmap

Next (Early Alpha)

  • Progressive Web App (PWA) for Android & iOS
  • Push notifications
  • Visit request system (customers → peddlers)
  • Request management (accept/reject)

Technical

  • Unit, integration, and E2E tests
  • Load testing and performance optimization
  • Query and backend optimization

Growth

  • Hand-drawn logo (Inkscape)
  • Landing page
  • Beta testing with local peddlers
  • Outreach to established peddler networks

Why Open Source?

I believe execution matters more than ideas—the real value is in building and iterating. I'm also using this project to showcase my skills and contribute to the community. Plus, transparency builds trust when handling location data.

How It Makes Money

Peddlers will pay a monthly subscription for premium features like route optimization, analytics, heatmaps, and customer insights. No in-app purchases planned.

Why Web-Only?

Faster development cycle + no app store approval delays. A native mobile app will follow if the project gains traction.

Tech Stack

Frontend

  • React, Vite, TypeScript
  • react-router (data mode), TailwindCSS, shadcn/ui
  • Zustand, react-leaflet, i18next

Backend

  • Actix-Web (Rust)
  • PostgreSQL, Docker, nginx, systemd

Getting Started

Dependencies

  • cargo (Rust, backend)
  • docker-cli (or docker-compose)
  • pnpm

Running it locally

Backend

  1. cd apps/api && docker-compose up -d (this will run the PostgreSQL DB in a container)
  2. After the Docker container is up and healthy: cargo run (Run dev mode)

Frontend

  1. cd apps/spa && pnpm i (Install node dependencies)
  2. pnpm dev (Run dev mode)

Running it on production

  1. You should prepare your remote server with the mentioned dependencies, except cargo (Build the backend binary locally).
  2. Also run the DB Container.
  3. Configure nginx, systemd (or your selected init system), create directories, unix user with the respective permissions, etc.
  4. Check deploy.sh

Considerations

  • Backend is meant to be built locally, then deploy the binary, don't forget the .env and config/default.toml, config/production.toml config files (should be available in your server)
  • Frontend is a Single Page Application (static files), no JS-runtime needed on the server

License

MIT License see LICENSE file for details.

About Me

I'm Juan Manzanero, a software developer. I've been thinking about this problem for years, but only recently had the experience to build it properly. I chose Rust and Actix-Web for it's performance and reliability, and React as is the Frontend framework/library that I enjoy using it for building UI.

Learn more: juanmanzanero.com