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.
- Project Overview
- Key Features
- System Architecture
- Database Design
- Technology Stack
- Project Structure
- Getting Started
- User Flows
- API Endpoints
- Contributing
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
- User registration and login system
- Session-based authentication
- Secure password management
- User profile management
- Personalized business dashboard
- Quick access to key services
- User account information
- Service recommendations
- Browse available services
- Service categories:
- π¨ Web Design & Development
- π± Digital Marketing
- π Business Mentoring
- π Management Assistance
- πΌ Business Support & Consultation
- Create and manage business portfolios
- Showcase company achievements
- Display services offered
- Portfolio analytics
- Upload and manage business documents
- Company registration files
- Certificate management
- Resource library
- Contact/enquiry forms
- Newsletter subscription
- Service quotation requests
- Business guides and resources
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
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
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
}
| 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 |
id | firstname | lastname | email | password | created_at
1 | Siphelele | Maphumulo | Siphelelemaphumulo@gmail.com | [hashed] | 2025-05-07 02:30:45
| 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) |
| Technology | Version | Purpose |
|---|---|---|
| PHP | 7.4+ | Server-side scripting |
| Sessions | Native PHP | User authentication management |
| CSV Storage | - | User data persistence |
{
"vlucas/phpdotenv": "^5.6",
"graham-campbell/result-type": "^1.1"
}| Library | Purpose |
|---|---|
| Pikaday | Date picker functionality |
| Modernizr | Feature detection |
| BookBlock | Book-style animations |
| Classie | CSS class manipulation |
- Server: Apache (XAMPP)
- Workspace Root:
c:\xampp\htdocs\Incubation - Version Control: Git
- Configuration: Environment variables (.env)
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 | 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 |
- PHP 7.4 or higher
- Apache Web Server (XAMPP recommended)
- Composer (for PHP dependency management)
- Web browser with JavaScript enabled
-
Clone the Repository
git clone <repository-url> cd Incubation
-
Install Dependencies
composer install
-
Configure Environment
- Copy
.env.exampleto.env(if exists) - Update configuration variables as needed
- Copy
-
Start Local Server
# Using XAMPP # Start Apache from XAMPP Control Panel # Access at http://localhost/Incubation/
-
Access the Application
- Open browser to
http://localhost/Incubation/ - Register new account or login
- Explore dashboard and features
- Open browser to
- Install PHP dependencies via Composer
- Configure
.envfile 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
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
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
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)
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
POST |
/signup.php |
Register new user | No |
POST |
/login.php |
Authenticate user | No |
GET |
/auth.php |
Validate session | Yes |
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
GET |
/dashboard.php |
User dashboard | Yes |
GET |
/profile |
User profile data | Yes |
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
GET |
/services.php |
List all services | Yes |
GET |
/quotation.html |
Quotation form | Yes |
POST |
/quotation.php |
Submit quotation | Yes |
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
GET |
/portfolio.php |
Portfolio management | Yes |
POST |
/portfolio.php |
Create portfolio | Yes |
PUT |
/portfolio.php |
Update portfolio | Yes |
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
GET |
/files.php |
File listing | Yes |
POST |
/files.php |
Upload file | Yes |
DELETE |
/files.php |
Delete file | Yes |
-
Session-Based Authentication
- User sessions stored server-side
- Session validation on protected pages
- Automatic redirect to login for unauthorized access
-
Password Security
- Encrypted password storage
- Password hashing using bcrypt (confirmed)
-
Environment Configuration
- Use of
.envfor sensitive data - PHP dotenv for secure configuration
- Use of
-
Input Handling
- Form validation in JavaScript
- Server-side validation recommended for enhanced security
{
"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"
}{
"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"
}{
"id": 1,
"service_name": "Web Design",
"category": "design|marketing|mentoring|management|support",
"description": "Service details",
"price": 5000.00,
"provider_id": 1,
"status": "active|inactive"
}- CSV-Based Storage β Consider database migration
- File System Storage β Implement cloud storage (S3, Azure Blob)
- Session Storage β Native PHP sessions sufficient for current scale
- No Caching β Implement Redis for performance
- Migrate from CSV to MySQL/PostgreSQL
- Implement object-oriented architecture
- Add API rate limiting
- Implement caching layer
- Add logging and monitoring
- 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
- Unit Testing: PHPUnit
- Integration Testing: Postman/Insomnia
- E2E Testing: Selenium/Cypress
- Load Testing: Apache JMeter
- Security Testing: OWASP ZAP
- PSR-12: Extended coding style guide
- PSR-4: Autoloading standard
- Naming: camelCase for variables/methods, PascalCase for classes
- Semantic HTML5
- Mobile-first CSS design
- BEM (Block, Element, Modifier) for CSS classes
- Lowercase for file names
- ES6+ syntax
- Vanilla JS (no external frameworks currently)
- Event delegation for dynamic content
- Unobtrusive JavaScript approach
- Item 1: None reported
- Item 2: None reported
- 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
- Bug Reports: Create an issue in the repository
- Feature Requests: Discuss in project issues
- Questions: Use discussions tab
- Email: [contact email]
- Website: [project website]
- Phone: [contact phone]
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow existing code style
- Add comments for complex logic
- Test thoroughly before submitting PR
- Update documentation as needed
- Keep commits atomic and descriptive
- 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