Skip to content

Siphelele-Maphumulo/Virtual-Incubation-website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SMMEs Virtual Incubation Platform

A comprehensive virtual incubation platform designed to support Small, Micro and Medium-sized Enterprises (SMMEs) with access to professional services, mentoring, and business growth opportunities.

πŸ“‹ Table of Contents


🎯 Project Overview

The SMMEs Virtual Incubation Platform is a web-based ecosystem that connects small and medium-sized enterprises with critical business services. The platform enables entrepreneurs to:

  • Access Professional Services: Web design, digital marketing, mentoring
  • Manage Portfolio: Showcase business achievements and projects
  • Connect Virtually: Engage with service providers and mentors across the country
  • Track Business Growth: Monitor business development through an intuitive dashboard
  • Share Resources: Access guides, quotations, and business materials
  • Newsletter Engagement: Stay updated with business insights and opportunities

Target Users:

  • Business Owners & Entrepreneurs
  • Service Providers (Mentors, Designers, Marketers)
  • SMME Support Organizations

✨ Key Features

1. User Authentication & Management

  • User registration and login system
  • Session-based authentication
  • Secure password management
  • User profile management

2. Dashboard

  • Personalized business dashboard
  • Quick access to key services
  • User account information
  • Service recommendations

3. Service Marketplace

  • Browse available services
  • Service categories:
    • 🎨 Web Design & Development
    • πŸ“± Digital Marketing
    • πŸŽ“ Business Mentoring
    • πŸ“Š Management Assistance
    • πŸ’Ό Business Support & Consultation

4. Portfolio Management

  • Create and manage business portfolios
  • Showcase company achievements
  • Display services offered
  • Portfolio analytics

5. File Management

  • Upload and manage business documents
  • Company registration files
  • Certificate management
  • Resource library

6. Additional Features

  • Contact/enquiry forms
  • Newsletter subscription
  • Service quotation requests
  • Business guides and resources

πŸ—οΈ System Architecture

High-Level Architecture Diagram

graph TB
    subgraph Client["Client Layer"]
        WEB["Web Browser"]
        MOBILE["Mobile Responsive"]
    end
    
    subgraph Web["Web Server Layer"]
        LANDING["Landing Pages<br/>home.html, index.html"]
        AUTH["Authentication<br/>login.php, register.php"]
        APP["Application Pages<br/>dashboard.php, services.php"]
    end
    
    subgraph Backend["Backend Processing"]
        AUTHLOGIC["Auth Logic<br/>auth.php"]
        PORTFOLIO["Portfolio Handler<br/>portfolio.php"]
        FILES["File Manager<br/>files.php"]
        SERVICES["Service Handler<br/>services.php"]
        ADS["Advertisement Handler<br/>advertisements.php"]
    end
    
    subgraph Assets["Assets & Resources"]
        CSS["Stylesheets<br/>css/"]
        JS["JavaScript<br/>js/"]
        IMG["Images & Media<br/>assets/"]
    end
    
    subgraph Data["Data Layer"]
        CSV["User Database<br/>users.csv"]
        FILES_STORAGE["File Storage<br/>assets/"]
    end
    
    WEB --> LANDING
    WEB --> AUTH
    WEB --> APP
    LANDING --> AUTHLOGIC
    AUTH --> AUTHLOGIC
    APP --> BACKEND
    BACKEND --> Data
    LANDING --> Assets
    APP --> Assets
    AUTH --> Assets
Loading

Component Architecture

graph LR
    subgraph Presentation["Presentation Layer"]
        INDEX["index.html"]
        DASHBOARD["dashboard.php"]
        SERVICES_PAGE["services.php"]
        PORTFOLIO_PAGE["portfolio.php"]
    end
    
    subgraph Business["Business Logic Layer"]
        AUTHSERVICE["Authentication<br/>Service"]
        PORTFOLIOSERVICE["Portfolio<br/>Service"]
        FILESERVICE["File<br/>Service"]
        SERVICECAT["Service<br/>Catalog"]
    end
    
    subgraph Data_Access["Data Access Layer"]
        USERS_DB["Users Database<br/>users.csv"]
        FILE_SYSTEM["File System<br/>Storage"]
    end
    
    INDEX --> AUTHSERVICE
    DASHBOARD --> PORTFOLIOSERVICE
    DASHBOARD --> FILESERVICE
    SERVICES_PAGE --> SERVICECAT
    PORTFOLIO_PAGE --> PORTFOLIOSERVICE
    
    AUTHSERVICE --> USERS_DB
    PORTFOLIOSERVICE --> FILE_SYSTEM
    FILESERVICE --> FILE_SYSTEM
    SERVICECAT --> FILE_SYSTEM
Loading

πŸ’Ύ Database Design

Database Schema

erDiagram
    USERS ||--o{ PORTFOLIO : creates
    USERS ||--o{ QUOTATION : requests
    USERS ||--o{ ADVERTISEMENT : views
    USERS ||--o{ FILES : uploads
    PORTFOLIO ||--o{ FILES : contains
    SERVICES ||--o{ QUOTATION : receives
    
    USERS {
        int id PK
        string firstname
        string lastname
        string email UK
        string password
        timestamp created_at
        string status
        string phone
        string company_name
    }
    
    PORTFOLIO {
        int id PK
        int user_id FK
        string company_name
        string description
        string industry
        date created_date
        timestamp updated_at
        string status
    }
    
    SERVICES {
        int id PK
        string service_name
        string category
        text description
        float price
        int provider_id
        string status
    }
    
    QUOTATION {
        int id PK
        int user_id FK
        int service_id FK
        text description
        float amount
        date request_date
        string status
        timestamp created_at
    }
    
    ADVERTISEMENT {
        int id PK
        int user_id FK
        string title
        text content
        date posted_date
        string status
    }
    
    FILES {
        int id PK
        int user_id FK
        int portfolio_id FK
        string filename
        string file_type
        string file_path
        long file_size
        timestamp uploaded_at
    }
Loading

Data Relationships

Entity Relationships Purpose
USERS Central entity Stores all user/business information
PORTFOLIO One User β†’ Many Portfolios Tracks business portfolios for each user
SERVICES Many to Many with Users Marketplace for available services
QUOTATION Links Users to Services Tracks service quotes and requests
FILES Many to One with Users/Portfolio Manages uploaded documents and assets
ADVERTISEMENT One User β†’ Many Ads User promotional content

Current Database (users.csv)

id | firstname | lastname | email | password | created_at
1  | Siphelele | Maphumulo | Siphelelemaphumulo@gmail.com | [hashed] | 2025-05-07 02:30:45

πŸ› οΈ Technology Stack

Frontend Technologies

Technology Version Purpose
HTML5 Latest Semantic markup and structure
CSS3 Latest Styling and responsive design
JavaScript (Vanilla) ES6+ Client-side interactions
Normalize.css 8.0.1 Cross-browser compatibility
Font Awesome 6.4.2 Icons and glyphs
Google Fonts Latest Typography (Montserrat, Roboto Slab)

Backend Technologies

Technology Version Purpose
PHP 7.4+ Server-side scripting
Sessions Native PHP User authentication management
CSV Storage - User data persistence

Dependencies (Composer)

{
  "vlucas/phpdotenv": "^5.6",
  "graham-campbell/result-type": "^1.1"
}

Supporting Libraries

Library Purpose
Pikaday Date picker functionality
Modernizr Feature detection
BookBlock Book-style animations
Classie CSS class manipulation

Development Environment

  • Server: Apache (XAMPP)
  • Workspace Root: c:\xampp\htdocs\Incubation
  • Version Control: Git
  • Configuration: Environment variables (.env)

πŸ“ Project Structure

Incubation/
β”œβ”€β”€ πŸ“„ README.md                          # This file
β”œβ”€β”€ πŸ“„ composer.json                      # PHP dependencies
β”œβ”€β”€ πŸ“„ composer.lock                      # Locked dependencies
β”œβ”€β”€ πŸ“„ .env                               # Environment configuration
β”œβ”€β”€ πŸ“„ .gitmodules                        # Git submodules
β”‚
β”œβ”€β”€ πŸ” Authentication & Core
β”‚   β”œβ”€β”€ auth.php                          # Session authentication logic
β”‚   β”œβ”€β”€ login.php                         # Login processing
β”‚   β”œβ”€β”€ signup.php                        # Registration processing
β”‚   β”œβ”€β”€ register.html                     # Registration form
β”‚   β”œβ”€β”€ login.html                        # Login form
β”‚
β”œβ”€β”€ πŸ“Š Pages
β”‚   β”œβ”€β”€ index.html                        # Home page
β”‚   β”œβ”€β”€ home.html                         # Landing page
β”‚   β”œβ”€β”€ dashboard.php                     # User dashboard (requires auth)
β”‚   β”œβ”€β”€ services.php                      # Services listing (requires auth)
β”‚   β”œβ”€β”€ portfolio.php                     # Portfolio management (requires auth)
β”‚   β”œβ”€β”€ files.php                         # File management (requires auth)
β”‚   β”œβ”€β”€ advertisements.php                # Advertisement management
β”‚   β”œβ”€β”€ contact.html                      # Contact form
β”‚   β”œβ”€β”€ quotation.html                    # Quote request form
β”‚   β”œβ”€β”€ guidehistory.html                 # Business guide
β”‚
β”œβ”€β”€ 🎨 Views/Layouts
β”‚   β”œβ”€β”€ header.html                       # Common header
β”‚   β”œβ”€β”€ Footer.html                       # First footer variant
β”‚   β”œβ”€β”€ Footer2.html                      # Second footer variant
β”‚   β”œβ”€β”€ newsletter.html                   # Newsletter section
β”‚
β”œβ”€β”€ 🎨 Stylesheets (css/)
β”‚   β”œβ”€β”€ styles.css                        # Main stylesheet
β”‚   β”œβ”€β”€ index.css                         # Home page styles
β”‚   β”œβ”€β”€ index2.css                        # Alternative styles
β”‚   β”œβ”€β”€ dashboard.css                     # Dashboard styling
β”‚   β”œβ”€β”€ component.css                     # Component styles
β”‚   β”œβ”€β”€ porfolio.css                      # Portfolio styles
β”‚   β”œβ”€β”€ register.css                      # Registration styling
β”‚   β”œβ”€β”€ newsletter.css                    # Newsletter styling
β”‚   β”œβ”€β”€ quotation.css                     # Quotation form styling
β”‚   β”œβ”€β”€ bookblock.css                     # Book animation styles
β”‚   β”œβ”€β”€ dfg.css                           # Additional styles
β”‚   β”œβ”€β”€ ads.css                           # Advertisement styling
β”‚   β”œβ”€β”€ normalize.css                     # CSS normalize
β”‚   └── siphelele.css                     # Custom styles
β”‚
β”œβ”€β”€ βš™οΈ Scripts (js/)
β”‚   β”œβ”€β”€ main.js                           # Main application script
β”‚   β”œβ”€β”€ validation.js                     # Form validation
β”‚   β”œβ”€β”€ newsletter.js                     # Newsletter logic
β”‚   β”œβ”€β”€ bookblock.min.js                  # Book animation
β”‚   β”œβ”€β”€ bookshelf.js                      # Bookshelf logic
β”‚   β”œβ”€β”€ classie.js                        # CSS class helper
β”‚   β”œβ”€β”€ modernizr.custom.js               # Feature detection
β”‚   └── ilove.js                          # Custom interactions
β”‚
β”œβ”€β”€ πŸ“¦ Assets (assets/)
β”‚   β”œβ”€β”€ img/
β”‚   β”‚   β”œβ”€β”€ portfolio/                    # Portfolio images
β”‚   β”‚   β”œβ”€β”€ team/                         # Team photos
β”‚   β”‚   β”œβ”€β”€ about/                        # About page images
β”‚   β”‚   β”œβ”€β”€ logos/
β”‚   β”‚   β”‚   └── logo/                     # Company logos
β”‚   β”‚   └── [various product images]
β”‚   β”œβ”€β”€ books/                            # Book assets
β”‚   β”œβ”€β”€ companies/                        # Company assets
β”‚   └── logos/                            # Brand logos
β”‚
β”œβ”€β”€ πŸ“š Vendor (vendor/)
β”‚   β”œβ”€β”€ autoload.php                      # Composer autoloader
β”‚   β”œβ”€β”€ composer/                         # Composer metadata
β”‚   β”œβ”€β”€ vlucas/phpdotenv/                 # Environment variable loader
β”‚   β”œβ”€β”€ graham-campbell/result-type/      # Result type helper
β”‚   β”œβ”€β”€ phpoption/phpoption/              # Option type helper
β”‚   └── symfony/polyfill-*/               # Symfony polyfills
β”‚
β”œβ”€β”€ πŸ“Š Data
β”‚   └── users.csv                         # User database (CSV format)
β”‚
└── πŸ› οΈ Configuration (hidden)
    β”œβ”€β”€ .git/                             # Git version control
    β”œβ”€β”€ .github/                          # GitHub actions/config
    β”œβ”€β”€ .vscode/                          # VS Code settings
    └── .sixth/                           # Additional config

File Purpose Matrix

File Type Purpose Status
auth.php Backend Session validation & protection βœ… Active
dashboard.php Backend/View User dashboard interface βœ… Active
services.php Backend/View Service listing page βœ… Active
portfolio.php Backend/View Portfolio management βœ… Active
files.php Backend/View File/document management βœ… Active
advertisements.php Backend/View Ad management βœ… Active
login.php Backend Login processing βœ… Active
signup.php Backend Registration processing βœ… Active
index.html Frontend Home/landing page βœ… Active
contact.html Frontend Contact form βœ… Active
quotation.html Frontend Quote request form βœ… Active

πŸš€ Getting Started

Prerequisites

  • PHP 7.4 or higher
  • Apache Web Server (XAMPP recommended)
  • Composer (for PHP dependency management)
  • Web browser with JavaScript enabled

Installation Steps

  1. Clone the Repository

    git clone <repository-url>
    cd Incubation
  2. Install Dependencies

    composer install
  3. Configure Environment

    • Copy .env.example to .env (if exists)
    • Update configuration variables as needed
  4. Start Local Server

    # Using XAMPP
    # Start Apache from XAMPP Control Panel
    # Access at http://localhost/Incubation/
  5. Access the Application

    • Open browser to http://localhost/Incubation/
    • Register new account or login
    • Explore dashboard and features

First-Time Setup Checklist

  • Install PHP dependencies via Composer
  • Configure .env file with proper settings
  • Create database tables (from schema)
  • Import sample data if available
  • Verify all pages load correctly
  • Test user registration/login flow
  • Verify file upload functionality
  • Test responsive design on mobile

πŸ‘₯ User Flows

Authentication Flow

sequenceDiagram
    User->>Browser: Opens login.html
    Browser->>Server: Submits credentials
    Server->>Database: Validates credentials
    alt Valid Credentials
        Database-->>Server: User found & password matches
        Server->>Session: Create session (user_id)
        Server-->>Browser: Redirect to dashboard
        Browser->>Browser: Display dashboard.php
    else Invalid Credentials
        Database-->>Server: User not found OR password invalid
        Server-->>Browser: Display error message
        Browser->>Browser: Stay on login page
    end
Loading

Business Registration & Onboarding

sequenceDiagram
    Entrepreneur->>Browser: Visits Home Page
    Browser-->>Entrepreneur: Views features
    Entrepreneur->>Browser: Clicks "Sign Up"
    Browser->>Browser: Opens register.html
    Entrepreneur->>Browser: Fills registration form
    Browser->>Server: POST signup.php
    Server->>Database: Save user data
    Server-->>Browser: Confirmation
    Entrepreneur->>Browser: Logs in
    Browser->>Server: Login request
    Server->>Session: Create session
    Browser->>Dashboard: Load dashboard.php
    Entrepreneur->>Browser: Creates portfolio
    Browser->>Browser: Opens portfolio.php
    Entrepreneur->>Browser: Uploads business files
    Browser->>Server: File upload (files.php)
    Server-->>Browser: Files saved
Loading

Service Request Flow

sequenceDiagram
    User->>Dashboard: Logged in
    User->>Services: Browses services.php
    Services-->>User: Lists available services
    User->>Service: Selects desired service
    User->>Quotation: Fills quote form
    Quotation->>Database: Sends quotation request
    Database-->>User: Quote saved
    User-->>Email: Quote confirmation (optional)
Loading

πŸ”Œ API Endpoints

Authentication Endpoints

Method Endpoint Description Authentication
POST /signup.php Register new user No
POST /login.php Authenticate user No
GET /auth.php Validate session Yes

Dashboard Endpoints

Method Endpoint Description Authentication
GET /dashboard.php User dashboard Yes
GET /profile User profile data Yes

Service Endpoints

Method Endpoint Description Authentication
GET /services.php List all services Yes
GET /quotation.html Quotation form Yes
POST /quotation.php Submit quotation Yes

Portfolio Endpoints

Method Endpoint Description Authentication
GET /portfolio.php Portfolio management Yes
POST /portfolio.php Create portfolio Yes
PUT /portfolio.php Update portfolio Yes

File Management Endpoints

Method Endpoint Description Authentication
GET /files.php File listing Yes
POST /files.php Upload file Yes
DELETE /files.php Delete file Yes

πŸ” Security Features

Implemented Security Measures

  1. Session-Based Authentication

    • User sessions stored server-side
    • Session validation on protected pages
    • Automatic redirect to login for unauthorized access
  2. Password Security

    • Encrypted password storage
    • Password hashing using bcrypt (confirmed)
  3. Environment Configuration

    • Use of .env for sensitive data
    • PHP dotenv for secure configuration
  4. Input Handling

    • Form validation in JavaScript
    • Server-side validation recommended for enhanced security

πŸ“Š Data Models

User Model

{
  "id": 1,
  "firstname": "Siphelele",
  "lastname": "Maphumulo",
  "email": "Siphelelemaphumulo@gmail.com",
  "password": "$2y$10$...",
  "created_at": "2025-05-07 02:30:45",
  "company_name": "Optional",
  "phone": "Optional",
  "status": "active|inactive"
}

Portfolio Model

{
  "id": 1,
  "user_id": 1,
  "company_name": "Company Name",
  "description": "Business description",
  "industry": "Technology",
  "created_date": "2025-05-07",
  "updated_at": "2025-05-07 02:30:45",
  "status": "active|inactive"
}

Service Model

{
  "id": 1,
  "service_name": "Web Design",
  "category": "design|marketing|mentoring|management|support",
  "description": "Service details",
  "price": 5000.00,
  "provider_id": 1,
  "status": "active|inactive"
}

πŸ“ˆ Performance & Scalability

Current Architecture Limitations

  1. CSV-Based Storage β†’ Consider database migration
  2. File System Storage β†’ Implement cloud storage (S3, Azure Blob)
  3. Session Storage β†’ Native PHP sessions sufficient for current scale
  4. No Caching β†’ Implement Redis for performance

Recommended Improvements

  1. Migrate from CSV to MySQL/PostgreSQL
  2. Implement object-oriented architecture
  3. Add API rate limiting
  4. Implement caching layer
  5. Add logging and monitoring

πŸ§ͺ Testing

Manual Testing Checklist

  • User registration validation
  • Login/logout functionality
  • Session timeout handling
  • File upload limits and validation
  • Responsive design on mobile devices
  • Cross-browser compatibility (Chrome, Firefox, Safari, Edge)
  • Form validation (client & server)
  • Permission-based access control

Recommended Testing Tools

  • Unit Testing: PHPUnit
  • Integration Testing: Postman/Insomnia
  • E2E Testing: Selenium/Cypress
  • Load Testing: Apache JMeter
  • Security Testing: OWASP ZAP

πŸ“ Code Standards

PHP Coding Standards

  • PSR-12: Extended coding style guide
  • PSR-4: Autoloading standard
  • Naming: camelCase for variables/methods, PascalCase for classes

HTML/CSS Standards

  • Semantic HTML5
  • Mobile-first CSS design
  • BEM (Block, Element, Modifier) for CSS classes
  • Lowercase for file names

JavaScript Standards

  • ES6+ syntax
  • Vanilla JS (no external frameworks currently)
  • Event delegation for dynamic content
  • Unobtrusive JavaScript approach

πŸ› Known Issues & Roadmap

Current Issues

  • Item 1: None reported
  • Item 2: None reported

Planned Features (Roadmap)

  • Phase 1: Database migration to MySQL
  • Phase 2: API development (REST/GraphQL)
  • Phase 3: Mobile application
  • Phase 4: Advanced analytics dashboard
  • Phase 5: Payment gateway integration
  • Phase 6: AI-powered recommendations

πŸ“ž Support & Contact

Getting Help

  • Bug Reports: Create an issue in the repository
  • Feature Requests: Discuss in project issues
  • Questions: Use discussions tab

Contact Information

  • Email: [contact email]
  • Website: [project website]
  • Phone: [contact phone]

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘¨β€πŸ’» Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow existing code style
  • Add comments for complex logic
  • Test thoroughly before submitting PR
  • Update documentation as needed
  • Keep commits atomic and descriptive

πŸ™ Acknowledgments

  • Built for supporting SMMEs growth
  • Community-driven development
  • Thanks to all contributors and supporters

Last Updated: April 10, 2026
Version: 1.0.0
Maintainer: Development Team


Quick Links

About

This incubation website was created using WordPress and later transitioned to HTML, Javascript and PHP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors