2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00
2025-05-26 07:32:25 +02:00

E-WIKI - Electric Vehicle Database

A modern Symfony application for browsing and searching electric vehicle information. This application provides a clean, search-engine-like interface for exploring electric vehicle brands, models, and specifications.

Features

  • Modern Search Interface: Google-like search experience for electric vehicles
  • Brand Directory: Browse popular electric vehicle manufacturers
  • Vehicle Database: Comprehensive information about electric car models and revisions
  • RESTful API: JSON API endpoints for integration
  • MongoDB Integration: NoSQL database for flexible data storage
  • Responsive Design: Mobile-friendly interface without external CSS frameworks

Technology Stack

  • Backend: Symfony 7.2 (PHP 8.2+)
  • Database: MongoDB with Doctrine ODM
  • Frontend: Vanilla JavaScript with modern CSS
  • Architecture: Clean Architecture with SOLID principles

Requirements

  • PHP 8.2 or higher
  • MongoDB 4.4 or higher
  • Composer
  • MongoDB PHP Extension

Installation

  1. Clone the repository

    git clone <repository-url>
    cd evwiki
    
  2. Install dependencies

    composer install
    
  3. Configure environment

    cp .env.local.example .env.local
    

    Edit .env.local and set your MongoDB connection:

    APP_ENV=dev
    APP_SECRET=your-secret-key-here
    MONGODB_URI=mongodb://localhost:27017
    
  4. Start MongoDB Make sure MongoDB is running on your system.

  5. Seed the database

    php bin/console app:seed-data
    
  6. Start the development server

    symfony server:start
    

    Or use PHP's built-in server:

    php -S localhost:8000 -t public/
    

Project Structure

src/
├── Command/           # Console commands
├── Controller/        # HTTP controllers
├── Document/          # MongoDB document models
├── Repository/        # Data access layer
├── Service/           # Business logic layer
└── Kernel.php        # Application kernel

templates/
├── base.html.twig    # Base template
└── home/             # Home page templates

config/
├── bundles.php       # Bundle configuration
├── packages/         # Package configurations
├── routes.yaml       # Route definitions
└── services.yaml     # Service container

API Endpoints

  • GET /api/search?query={term} - Search for vehicles, brands, or models

Brands

  • GET /api/brands - Get all brands
  • GET /api/brands/{brandId}/models - Get models for a specific brand

Models

  • GET /api/models/category/{category} - Get models by category

Architecture

This application follows clean architecture principles:

Domain Layer

  • Documents: MongoDB document models (Brand, CarModel, CarRevision)
  • Repositories: Data access interfaces

Application Layer

  • Services: Business logic (CarSearchService)
  • Commands: Console commands for data management

Infrastructure Layer

  • Controllers: HTTP request handlers
  • Templates: Twig templates for rendering

Key Design Principles

  1. SOLID Principles: Each class has a single responsibility
  2. Dependency Injection: All dependencies are injected via constructor
  3. No Else Statements: Code uses early returns for better readability
  4. Readable Names: Self-documenting code with descriptive names

Development

Adding New Data

Use the seed command to populate the database:

php bin/console app:seed-data

Console Commands

List all available commands:

php bin/console list

Database Operations

The application uses MongoDB with Doctrine ODM. All database operations are handled through repositories following the Repository pattern.

Styling Guidelines

  • No External CSS Frameworks: Pure CSS following modern standards
  • Responsive Design: Mobile-first approach
  • Modern UI: Clean, minimalist design inspired by search engines
  • Accessibility: Semantic HTML and proper contrast ratios

Contributing

  1. Follow PSR-12 coding standards
  2. Write clean, self-documenting code
  3. Use dependency injection
  4. Follow SOLID principles
  5. Avoid else statements
  6. Use meaningful variable and method names

License

This project is licensed under the MIT License.

Support

For support and questions, please open an issue in the repository.

Description
No description provided
Readme 648 KiB
Languages
PHP 79.2%
Twig 20.2%
JavaScript 0.5%