Skip to content

eco.net is a platform for promoting sustainability, responsible consumption, and eco-friendly solutions through product management and community engagement. πŸŒπŸ’š

License

Notifications You must be signed in to change notification settings

fekikarim/econet

Repository files navigation

eco.net Logo

🌿 eco.net - Sustainable Resource Management Platform

Symfony PHP License Build Status

An innovative web platform designed to promote sustainable resource management and responsible consumption

πŸŽ₯ Live Demo β€’ πŸ“– Documentation β€’ 🀝 Contributing β€’ πŸ“§ Contact


🎬 Demo Screenshots

🌟 Platform Overview

Experience the power of sustainable resource management with our comprehensive ecological platform featuring advanced UI styling and the signature #6BB748 ecological theme.

🏠 Homepage - Dynamic & Engaging

eco.net Homepage - Dynamic content with transparent navigation

🌊 Dynamic homepage featuring real-time forum posts, upcoming events, and partner showcase with elegant transparent navigation


πŸ‘₯ Team & Community

eco.net Development Team

πŸ‘¨β€πŸ’» Meet our dedicated development team working towards a sustainable future through innovative technology

πŸ“‹ Table of Contents


🌟 Overview

eco.net is a comprehensive ecological platform that empowers businesses, organizations, and individuals to track, analyze, and optimize their environmental impact. Built with modern web technologies and featuring an advanced UI with our signature ecological theme (#6BB748), the platform provides powerful tools for sustainable resource management and community engagement.

🎯 Mission

To create a greener and more sustainable future by providing innovative digital solutions that promote environmental responsibility and community collaboration.


✨ Key Features

🌱 Environmental Management

  • πŸ“Š Resource Tracking & Optimization – Real-time monitoring and analytics for resource consumption
  • πŸ”„ Eco-Friendly Practices – Insights and recommendations to reduce waste and improve sustainability
  • πŸ† Environmental Challenges – Gamified sustainability challenges with progress tracking
  • πŸ“ˆ Impact Analytics – Comprehensive reports and data visualization

πŸ‘₯ Community & Collaboration

  • οΏ½ Community Forums – Connect with like-minded individuals and organizations
  • 🀝 Partnership Management – Business and Non-profit partner integration
  • πŸŽͺ Event Management – Organize and participate in environmental events
  • οΏ½ Donation System – Support environmental causes (Monetary, Material, Service)

πŸ›’ Marketplace & Commerce

  • πŸ›οΈ Eco-Product Marketplace – Buy and sell ecological products
  • πŸ“¦ Order Management – Complete e-commerce functionality
  • 🏷️ Product Categorization – Organized by ecological impact and origin

πŸ” Advanced Security & Authentication

  • οΏ½ Multi-Authentication – Email/Password, Google OAuth, GitHub OAuth
  • πŸ‘€ Role-Based Access Control – Admin, User, Partner roles
  • 🎭 Face ID Recognition – Advanced biometric authentication
  • πŸ”’ Secure Profile Management – Comprehensive user profiles with verification

οΏ½ Administration & Analytics

  • πŸŽ›οΈ Advanced Admin Dashboard – Comprehensive management interface
  • πŸ“ˆ Real-time Analytics – User engagement, event participation, donation tracking
  • πŸ“‹ Content Management – Forums, events, products, partnerships
  • πŸ”§ System Configuration – Customizable settings and notifications

πŸ› οΈ Technology Stack

Backend

  • Framework: Symfony 6.4 (PHP 8.1+)
  • Database: MySQL with Doctrine ORM
  • Authentication: Symfony Security Bundle + OAuth2
  • File Processing: Liip Imagine Bundle for image handling
  • PDF Generation: DomPDF for reports
  • Data Analysis: RubixML for machine learning insights

Frontend

  • Template Engine: Twig
  • JavaScript: Stimulus (Hotwired)
  • CSS Framework: Custom ecological theme with Bootstrap integration
  • UI Components: Advanced responsive design with #6BB748 color scheme
  • Real-time Features: Turbo for dynamic updates

Additional Technologies

  • QR Code Generation: Endroid QR Code Bundle
  • Pagination: KnpPaginatorBundle
  • Sentiment Analysis: PHP Sentiment Analyzer
  • Spreadsheet Processing: PhpSpreadsheet
  • Image Processing: GD/Imagick support

πŸ“¦ Installation

Prerequisites

  • PHP 8.1 or higher
  • Composer
  • MySQL 5.7+ or MariaDB 10.3+
  • Node.js 16+ (for asset compilation)
  • XAMPP/WAMP (for local development)

Step-by-Step Setup

  1. Clone the Repository

    git clone https://github.com/fekikarim/econet.git
    cd econet-symfony/econet
  2. Install Dependencies

    composer install
    npm install
  3. Environment Configuration

    cp .env .env.local
    # Edit .env.local with your database credentials and API keys
  4. Database Setup

    php bin/console doctrine:database:create
    php bin/console doctrine:migrations:migrate
    php bin/console doctrine:fixtures:load  # Optional: Load sample data
  5. Asset Compilation

    php bin/console importmap:install
    php bin/console asset-map:compile
  6. Download Required Images

    # Download the image assets from MediaFire
    # URL: https://www.mediafire.com/file/7nc71o7l2i3m4f9/img.rar/file
    # Extract the img.rar file and place the 'img' folder in assets/front/
    # Final structure should be: assets/front/img/

    πŸ“₯ Download Link: img.rar - Required Image Assets

    Instructions:

    1. Download the img.rar file from the link above
    2. Extract the archive to get the img folder
    3. Place the extracted img folder inside assets/front/
    4. Verify the structure: assets/front/img/ contains all image assets
  7. File Permissions

    # For XAMPP on Windows
    mkdir C:\xampp\htdocs\img\event
    mkdir C:\xampp\htdocs\img\profiles
    mkdir C:\xampp\htdocs\images
  8. Start Development Server

    symfony server:start

πŸ”§ Configuration

πŸ–ΌοΈ Required Image Assets

⚠️ Important: The platform requires additional image assets that are not included in the repository due to size constraints.

Download Required: img.rar - Image Assets

Setup Instructions:

# 1. Download img.rar from the MediaFire link
# 2. Extract the archive
# 3. Place the 'img' folder in: assets/front/img/
# 4. Verify structure: assets/front/img/ contains all images

OAuth Setup

Configure your OAuth providers in .env.local:

GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret

File Upload Directories

# config/services.yaml
parameters:
    products_images_directory: 'C:\xampp\htdocs\img'
    partners_logos_directory: 'C:\xampp\htdocs\images'
    challenges_directory: 'C:\xampp\htdocs\img'
    users_directory: 'C:\xampp\htdocs\img\profiles'

πŸš€ Usage

🏠 Homepage

  • Dynamic content featuring latest forum posts and upcoming events
  • Partner showcase with real-time statistics
  • Transparent navigation with smooth scrolling effects

πŸ‘€ User Registration & Authentication

  • Advanced registration form with password strength indicators
  • Gender selection and profile customization
  • Email verification and account setup process
  • Multiple authentication methods (Email, Google, GitHub, Face ID)

πŸŽͺ Event Management

  • Create and manage environmental events
  • Registration system with capacity management
  • Image upload and event categorization
  • Real-time availability tracking

🀝 Partnership System

  • Partner registration for businesses and non-profits
  • Admin approval workflow
  • Partnership statistics and analytics
  • Integration with donation system

οΏ½ Donation Platform

  • Multiple donation types: Monetary, Material, Service
  • Dynamic payment method requirements
  • Partner-linked donations
  • Comprehensive donation tracking and reporting

🎯 Core Modules

πŸ† Challenge System

#[ORM\Entity(repositoryClass: ChallengeRepository::class)]
class Challenge
{
    #[ORM\Column(length: 255)]
    #[Assert\NotBlank(message: 'Please enter a name')]
    private ?string $name = null;

    #[ORM\Column(type: Types::TEXT)]
    #[Assert\NotBlank(message: 'Please enter a description')]
    private ?string $description = null;
  • Gamified Environmental Challenges with progress tracking
  • Duration-based Challenges with start and end dates
  • Quiz Integration for educational content
  • Image Support for visual challenge representation

πŸŽͺ Event Management

#[ORM\Entity(repositoryClass: EventRepository::class)]
class Event
{
    #[ORM\Column(nullable: true)]
    #[Assert\Range(min: 1, max: 250)]
    private ?int $max_participants = null;

    public function getAvailableSpots(): ?int
    {
        return $this->max_participants - $this->eventRegistrations->count();
    }
  • Event Registration System with capacity management
  • Real-time Availability Tracking and booking status
  • Organizer Management with user assignment
  • Image Upload for event promotion

🀝 Partnership Management

#[Assert\Choice(
    choices: ['Sponsor', 'Fournisseur', 'Client', 'Business', 'Non-profit', 'Autre'],
    message: 'Veuillez choisir un type valide'
)]
private ?string $type = null;

#[ORM\Column(type: 'boolean', options: ['default' => false])]
private bool $isAccepted = false;
  • Multi-type Partners (Business, Non-profit, Sponsors, etc.)
  • Admin Approval Workflow for partner verification
  • Geographic Integration with latitude/longitude support
  • Logo Management and partner branding

πŸ’° Donation System

public const VALID_TYPES = ['Monetary', 'Material', 'Service'];
public const VALID_STATUSES = ['pending', 'approved', 'completed', 'cancelled'];
public const VALID_PAYMENT_METHODS = ['cash', 'bank_transfer', 'check', 'credit_card', 'none'];
  • Multiple Donation Types with flexible payment methods
  • Status Tracking from pending to completion
  • Partner Integration for donation attribution
  • Validation Rules for amount and type constraints

πŸ” Authentication

πŸ”‘ Multi-Authentication Support

  • Email/Password with advanced validation
  • Google OAuth2 integration
  • GitHub OAuth2 integration
  • Face ID Recognition for biometric authentication

πŸ‘€ User Management

#[ORM\Column(length: 255)]
private ?string $role = null;

#[ORM\Column(length: 255)]
private ?string $auth_method = null;

#[ORM\Column]
private ?bool $verified = null;
  • Role-Based Access Control (Admin, User, Partner)
  • Account Verification system
  • Profile Management with image upload
  • Gender Selection and demographic data

πŸ›‘οΈ Security Features

  • Password Strength Validation with real-time indicators
  • Remember Me functionality
  • Account Lockout protection
  • Secure Session Management

πŸ“Š Dashboard & Analytics

πŸŽ›οΈ Admin Dashboard

#[Route('/back', name: 'back_')]
#[IsGranted('ROLE_ADMIN', message: 'You need admin privileges')]
class BackDashboardController extends AbstractController
{
    public function index(
        UserRepository $userRepository,
        EventRepository $eventRepository,
        // ... other repositories
    ): Response
  • Real-time Statistics for all platform modules
  • User Analytics with role distribution
  • Event Participation tracking
  • Donation Monitoring and financial reports
  • Partner Management with approval workflows

πŸ“ˆ Analytics Features

  • Interactive Charts using Chart.js
  • Export Functionality with PDF generation
  • Data Visualization for trends and insights
  • Performance Metrics for platform optimization

🌐 API Documentation

πŸ”— RESTful Endpoints

The platform provides comprehensive API endpoints for:

  • User Management (/api/users)
  • Event Operations (/api/events)
  • Partner Integration (/api/partners)
  • Donation Processing (/api/donations)
  • Forum Interactions (/api/forums)

πŸ“ Request/Response Format

All API endpoints follow RESTful conventions with JSON request/response format:

{
  "status": "success",
  "data": {
    "id": 1,
    "name": "Environmental Challenge",
    "description": "Reduce plastic usage by 50%"
  },
  "message": "Challenge created successfully"
}

πŸ§ͺ Testing

πŸ”¬ Test Suite

Run the comprehensive test suite:

# Run all tests
php bin/phpunit

# Run specific test categories
php bin/phpunit tests/Unit
php bin/phpunit tests/Integration
php bin/phpunit tests/Functional

# Generate coverage report
php bin/phpunit --coverage-html coverage

🎯 Test Categories

  • Unit Tests for individual components
  • Integration Tests for database operations
  • Functional Tests for user workflows
  • API Tests for endpoint validation

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

πŸš€ Getting Started

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

πŸ“‹ Development Guidelines

  • Follow PSR-12 coding standards
  • Write comprehensive tests for new features
  • Update documentation for API changes
  • Use semantic commit messages
  • Ensure all tests pass before submitting

πŸ› Bug Reports

Please use the GitHub issue tracker to report bugs. Include:

  • Detailed description of the issue
  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details (PHP version, OS, etc.)

πŸ“„ License

This project is licensed under a Proprietary Academic License developed specifically for the eco.net platform.

πŸ“‹ License Summary

  • Type: Academic Proprietary License
  • Copyright: Β© 2024-2025 ESPRIT Engineering School - eco.net Development Team
  • Project: PIDEV (Integrated Development Project)
  • Academic Year: 2024-2025

βœ… Permitted Uses

  • πŸŽ“ Academic Review by faculty and educational institutions
  • πŸ“š Educational Demonstration in academic settings
  • πŸ’Ό Portfolio Showcase by team members
  • πŸ“– Research Reference in scholarly publications

❌ Restrictions

  • 🚫 No Commercial Use without explicit permission
  • 🚫 No Redistribution or sublicensing
  • 🚫 No Derivative Works for distribution
  • 🚫 Trademark Protection for eco.net branding

πŸ“ž Licensing Inquiries

For permissions, academic collaboration, or licensing questions, contact:

Full License: See LICENSE file for complete terms and conditions.


πŸ“ž Contact

πŸ‘₯ Development Team

Name Role Email
Karim Feki Challenges Management Feki.Karim@esprit.tn
Nesrine Derouiche Forums Management Nesrine.Derouiche@esprit.tn
Mohamed Abidi User Management abidi.mohamed.1@esprit.tn
Salma Laifi Product Management Salma.Laifi@esprit.tn
Amira Ghober Events Management amira.ghobber@esprit.tn
Amin Hmem Donations Management Amin.Hmem@esprit.tn

🏫 Institution

ESPRIT - Γ‰cole SupΓ©rieure PrivΓ©e d'IngΓ©nierie et de Technologies Academic Year: 2024-2025 Project: PIDEV (Projet IntΓ©grΓ© de DΓ©veloppement)

🌐 Links

  • 🌍 Website: eco.net
  • πŸ“± Social Media: Follow us for updates and environmental tips

🌱 Join the Green Revolution!

Together, we can build a more sustainable future through innovative technology and community collaboration.

Made with πŸ’š by the eco.net team

ESPRIT Symfony Ecological

About

eco.net is a platform for promoting sustainability, responsible consumption, and eco-friendly solutions through product management and community engagement. πŸŒπŸ’š

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5