Version: 1.0.0 Created: 2025-08-28 Updated: 2025-08-28 Author: Kim Hsiao
Mappins is a community platform based on maps that allows users to share and edit location information, and manage content changes through a version control system. The platform combines Geographic Information Systems (GIS), community interaction features, and collaborative editing mechanisms.
- Map-based location information management
- WYSIWYG Markdown editor
- Git-like version control system
- Multimedia content support (text, images, videos, documents)
- Member system and community features
- Personal blog functionality
- Cross-platform support
- Web: React 18.3.1 + TypeScript + Vite
- Mobile: React Native 0.75.2 + Expo 51.0.20
- Desktop: Electron + React
- Map Service: OpenStreetMap + Leaflet
- Editor: TinyMCE / Quill.js + Markdown support
- State Management: Zustand / Redux Toolkit
- UI Framework: Shadcn UI + Tailwind CSS
- i18n: React i18next (Traditional Chinese/Simplified Chinese/English)
- API Gateway: Nginx
- User Service: Port 3001
- Location Service: Port 3002
- Version Control Service: Port 3003
- Blog Service: Port 3004
- Social Service: Port 3005
- File Service: Port 3006
- Search Service: Port 3007
- Admin Service: Port 3008
- Chat Service: Port 3009
- PostgreSQL 16.4 (Main database)
- Redis 7.2.5 (Cache & Session)
- MeiliSearch 1.10.1 (Search engine)
- MinIO RELEASE.2025-08-06T01-26-25Z (File storage)
- Docker Compose
- Prometheus 2.54.0 (Monitoring)
- Grafana 11.2.0 (Visualization)
- RabbitMQ 3.13.2 (Message broker)
mappins/
├── README.md
├── CHANGELOG.md
├── LICENSE
├── .gitignore
├── .editorconfig
├── .env.example
├── docker-compose.yml
├── frontend/
│ ├── web/
│ ├── mobile/
│ └── desktop/
├── backend/
│ ├── services/
│ │ ├── user-service/
│ │ ├── location-service/
│ │ ├── version-service/
│ │ ├── blog-service/
│ │ ├── social-service/
│ │ ├── file-service/
│ │ ├── search-service/
│ │ ├── admin-service/
│ │ └── chat-service/
│ └── packages/
├── docs/
└── scripts/
- Bun 1.x (runtime environment and package manager)
- Docker 25.x
- Docker Compose 2.x
-
Clone the repository:
git clone <repository-url> cd mappins
-
Install dependencies:
# Install all dependencies bun install -
Set up environment variables:
cp .env.example .env # Edit .env with your configuration -
Start the development environment:
docker-compose up -d
This project uses GitHub Actions for continuous integration and continuous deployment:
- Runs on every push to
mainanddevelopbranches - Runs on every pull request to
mainanddevelopbranches - Performs code quality checks (linting, formatting, type checking)
- Runs unit tests
- Runs on every push to
mainbranch - Builds and pushes Docker images
- Deploys to staging environment
- Deploys to production environment (manual trigger)
- CI workflow:
.github/workflows/ci.yml - CD workflow:
.github/workflows/cd.yml
DOCKERHUB_USERNAME: Docker Hub usernameDOCKERHUB_TOKEN: Docker Hub access token
- Use bun for all Node.js package management and package management
- Use bun instead of node.js runtime environment
- Write all documentation in English
- Update CHANGELOG.md after each development
- Add appropriate and effective comments in all development files, written in English
- Store all environment settings, URLs, port numbers, environment variables, private passwords, and other sensitive or environment-dependent data in .env or .yaml files
- Use uv for Python-related settings or environments
- Use the latest/stable (LTS) versions for all packages and container images
- Reference context7 for all development work
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT License