Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tolereveo

Bản đồ tìm nhà vệ sinh sạch gần bạn — Vietnam's toilet-finder map. Trạng thái: Đã ngừng hoạt động & mở mã nguồn cho cộng đồng — Discontinued, open-sourced to the community.

Status License Backend Frontend Map

Tolereveo giúp người Việt tìm nhà vệ sinh sạch, gần nhất — ở quán cà phê, trạm xăng, trạm sạc, nhà hàng, công viên và nhiều nơi khác. Dự án từng chạy production tại tolereveo.com qua Cloudflare Tunnel. Chúng tôi hết tiền duy trì server nên tạm ngưng và trao toàn bộ source code cho cộng đồng.

Tolereveo helps people in Vietnam find clean, nearby restrooms — at coffee shops, gas stations, charging stations, restaurants, parks and more. It ran in production at tolereveo.com. We can no longer afford to keep the server running, so we're shutting it down and giving the full source to the community. Fork it, host it, improve it — it's yours.


Ảnh chụp màn hình

Trang chủ Bản đồ
Trang chủ Bản đồ
Thêm nhà vệ sinh Bản đồ trên điện thoại
Thêm nhà vệ sinh Bản đồ di động
Trang chủ di động Đăng nhập
Trang chủ di động Đăng nhập

Tính năng

  • Bản đồ tương tác — MapLibre GL JS + Goong tiles, hiển thị nhà vệ sinh gần vị trí hiện tại.
  • Danh mục — cà phê, trạm xăng, trạm sạc, nhà hàng, cửa hàng, công viên, khách sạn, bãi đậu xe... (với icon GIF 8-bit).
  • Thêm nhà vệ sinh — bất kỳ ai cũng cung cấp được, kiểm duyệt qua admin panel.
  • Đánh giá & ảnh — người dùng chấm điểm, bình luận, tải ảnh lên.
  • Chỉ đường — gọi Goong Routing API để dẫn đường tới nhà vệ sinh.
  • Tài khoản — đăng ký / đăng nhập (Sanctum token), hồ sơ người dùng, avatar.
  • Admin panel — Blade tại /admin, kiểm duyệt toilet, review, quản lý người dùng, amenity.
  • Giao diện — 8-bit pixel art dark theme, font Be Vietnam Pro, animation GSAP.
  • Khả năng tìm kiếm — bản đồ toàn màn hình, danh sách toilet của tôi, lọc theo danh mục.

Tech stack

Lớp Công nghệ
Backend Laravel 13.x (PHP 8.4), Sanctum, Blade admin
Database PostgreSQL 16
Cache / Queue / Session Redis 7
Frontend Vue 3 + Vite + Pinia + Vue Router + Tailwind CSS
Bản đồ MapLibre GL JS + Goong tiles (direct API, không proxy)
Chỉ đường Goong Routing API
Triển khai Docker Compose (PHP-FPM, Nginx, PostgreSQL, Redis)
Tunnel Cloudflare Tunnel
Khóa chính UUID

Dự án đã ngừng hoạt động

Chúng tôi đã hết nguồn tài chính để duy trì server, nên Tolereveo không còn hoạt động online (server đã tắt). Thay vì để source rơi rớt, chúng tôi mở mã nguồn toàn bộ và giao cho cộng đồng:

  • Fork và tự host nếu bạn muốn giúp Tolereveo sống lại.
  • Mọi đóng góp được hoan nghênh — fix bug, thêm tính năng, cải thiện UI.
  • Nếu bạn tiếp nhận dự án, hãy nhớ revoke/go bỏ các API key Goong cũ (key đã bị xóa khỏi repo và git history, nhưng bạn cần tạo key riêng của mình tại https://account.goong.io).

We ran out of funding to keep the server online, so Tolereveo is no longer live. Rather than let the code rot, we open-sourced everything for the community. Fork it and bring it back to life if you want to. All Goong API keys were scrubbed from the repo and git history — you must create your own at https://account.goong.io.


Chạy local / Tự host

Yêu cầu

  • Docker + Docker Compose
  • Tài khoản Goong (free tier ok) → 1 API key + 1 Map key tại https://account.goong.io
  • Python 3.10+ (nếu muốn scrape dữ liệu)

Các bước

# 1. Clone
git clone https://github.com/vigstudio/tolereveo.git
cd tolereveo

# 2. Cấu hình backend
cp backend/.env.docker backend/.env
#   -> tự sinh APP_KEY:  docker compose exec app php artisan key:generate
#   -> điền GOONG_API_KEY + GOONG_MAP_KEY từ account.goong.io

# 3. Cấu hình frontend
cp frontend/.env.production frontend/.env.local
#   -> điền VITE_GOONG_MAP_KEY

# 4. Cấu hình Docker (mật khẩu DB)
cp .env.example .env
#   -> đổi DB_PASSWORD thành mật khẩu bạn muốn

# 5. Build & chạy
docker compose up -d --build

# 6. Chạy migrate (tự sinh APP_KEY nếu chưa)
docker compose exec app php artisan key:generate
docker compose exec app php artisan migrate

# 7. (Tùy chọn) Nạp dữ liệu nhà vệ sinh
python tools/scraper.py          # scrape từ Google Maps -> tools/toilets_data.json
#   sau đó import vào DB:
docker compose exec app php artisan toilets:import --file=tools/toilets_data.json
#   hoặc:  python tools/import_to_db.py   (cần DB_PASSWORD env)

Truy cập

URL Mô tả
http://localhost:4101 Frontend (Vue app)
http://localhost:4101/api API (Laravel, qua Nginx proxy)
http://localhost:4101/admin Admin panel (Blade, session auth)

Chưa có tài khoản admin. Tạo admin đầu tiên trực tiếp trong DB: UPDATE users SET is_admin = true WHERE email = 'your@email'; (qua docker compose exec db psql -U tolereveo_user -d tolereveo).


Dữ liệu

Dữ liệu nhà vệ sinh ban đầu được scrape từ Google Maps (tools/scraper.py) — các chuỗi quán cà phê, trạm xăng, trạm sạc tại 63 tỉnh thành Việt Nam. File dữ liệu (tools/toilets_data.json) không được lưu trong repo (bạn có thể scrape lại). Dữ liệu vị trí là business public, không phải thông tin cá nhân.

The initial toilet dataset was scraped from Google Maps (coffee chains, gas stations, EV charging across 63 Vietnamese provinces). The data file is not included in the repo — regenerate it with tools/scraper.py. Locations are public businesses, not personal data.


Cấu trúc repo

tolereveo/
- backend/        # Laravel 13 API + Blade admin
- frontend/       # Vue 3 + Vite SPA
- tools/          # scraper.py, import_to_db.py, category GIF generator, UI test scripts
- docker-compose.yml
- .env.example    # DB password template for docker compose

Ghi chú bảo mật

Trước khi mở mã nguồn, tất cả thông tin nhạy cảm (Goong API keys, Laravel APP_KEY, DB password) đã được xóa khỏi working tree và git history. Nếu bạn là chủ repo gốc: revoke ngay các key Goong cũ tại https://account.goong.io và tạo lại APP_KEY mới, vì chúng đã từng nằm trong git history.

Before open-sourcing, all secrets (Goong API keys, Laravel APP_KEY, DB password) were scrubbed from both the working tree and git history. If you're the original owner: revoke the old Goong keys immediately at https://account.goong.io and regenerate the APP_KEY, since they were once committed.


Giấy phép

Mã nguồn được phép theo MIT License — làm bất kỳ thứ gì bạn muốn. Xem file LICENSE.

The source is licensed under the MIT License — do whatever you want with it.


Cảm ơn

Tolereveo được xây dựng bởi vigstudio với tình yêu với bản đồ và những nhà vệ sinh sạch của Việt Nam.

Built by vigstudio with love for maps and clean Vietnamese restrooms. If you revive it, let us know — we'd love to see it live again.

About

Tolereveo — Ban do tim nha ve sinh sach gan ban (Vietnam toilet-finder map). DISCONTINUED & open-sourced to the community. Laravel 13 + Vue 3 + MapLibre + Goong.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages