Design your world — Mappic.app is a web application for creating fully customizable poster designs from maps.
undefinedDesign your world.undefined
Mappic is a creative web application that lets you generate beautiful, fully customizable map-based poster designs. Choose any location in the world, customize every detail with multiple styles and themes, and export print-ready designs.
With Mappic, you can create stunning visual representations of your favorite places, perfect for home decor, gifts, or personal projects.
shared/services/# Clone the repository
git clone https://github.com/BasBravo/Mappic.git
cd Mappic
# Install dependencies
npm install
# or
pnpm install
Create a .env.local file in the root directory:
# Firebase Configuration
NUXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NUXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NUXT_PUBLIC_FIREBASE_APP_ID=your_app_id
See .env.example for all available options.
npm run dev
# or
pnpm dev
The application will be available at http://localhost:3000
npm run build
# or
pnpm build
npm run preview
# or
pnpm preview
# Unit tests
npm run test:unit
# Component tests
npm run test:nuxt
# All tests
npm run test
# Lint code
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run format
# Type checking
npm run typecheck
# Full validation (pre-push)
npm run validate
mappic/
├── app/ # Nuxt application
│ ├── components/ # Reusable UI components
│ ├── composables/ # Business logic hooks
│ ├── pages/ # Route pages
│ ├── layouts/ # Layout templates
│ ├── plugins/ # Nuxt plugins
│ ├── middleware/ # Route middleware
│ └── utils/ # Utility functions
│
├── shared/
│ └── services/ # Firebase services layer
│ ├── file.ts # File operations
│ ├── map.ts # Map operations
│ ├── auth.ts # Authentication
│ └── ... # Other services
│
├── stores/ # Pinia stores (global state)
├── types/ # TypeScript type definitions
├── helpers/ # Helper functions
├── public/ # Static assets
├── nuxt.config.ts # Nuxt configuration
├── tsconfig.json # TypeScript configuration
└── tailwind.config.js # Tailwind CSS configuration
Components (UI)
↓ uses
Composables (Business Logic)
↓ uses
Stores (State) + Services (Firebase)
↓ uses
Firebase (Firestore + Storage)
undefinedKey Principles:undefined
All Firebase operations are centralized in shared/services/:
Services automatically normalize Firebase Storage URLs to ensure consistency across the application.
projectbrief.md — Project overview and goalsproductContext.md — Product features and data structuresystemPatterns.md — Architecture and design patternstechContext.md — Technical stack and configurationactiveContext.md — Current state and decisionsprogress.md — Development progress and roadmapContributions are welcome! Please follow these guidelines:
undefinedFork the repository and create a feature branch
git checkout -b feature/your-feature-name
undefinedFollow the coding standards in AGENTS.md
undefinedWrite tests for new features
npm run test
undefinedValidate your code before pushing
npm run validate
undefinedCreate a Pull Request with a clear description of changes
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and commit
git add .
git commit -m "feat: add amazing feature"
# Push to your fork
git push origin feature/amazing-feature
# Create Pull Request on GitHub
This project is licensed under the MIT License — see the LICENSE file for details.
You are free to use, modify, and distribute this software for any purpose, commercial or personal.
undefinedBasBravoundefined
undefinedMade with ❤️ by BasBravoundefined
Design your world with Mappic.
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.