# SkillCurrency
**Bangladesh's Premier Peer-to-Peer Skill Exchange Marketplace**
[π Visit Live Demo](https://skillcurrency.onrender.com/)
[](https://python.org)
[](https://djangoproject.com)
[](https://channels.readthedocs.io)
[](LICENSE)
[]()
*Trade coding for design. Teach English for Python. Or simply get paid for what you know.*
[Live Demo](https://skillcurrency.onrender.com/) Β· [Report Bug](https://github.com/NasorHidar/SkillCurrency/issues) Β· [Request Feature](https://github.com/NasorHidar/SkillCurrency/issues)
SkillCurrency is a full-stack freelance marketplace built specifically for Bangladeshβs growing community of digital talent. It goes beyond a typical job board by enabling skill barter β users can trade expertise directly without monetary exchange.
A Python developer can teach coding in exchange for logo design. A marketing expert can offer SEO work in return for video editing lessons. No cash required.
The platform supports both Paid Services and Skill Barter transactions, backed by a secure workspace, real-time encrypted messaging, milestone tracking, and an AI-powered skill assessment system.
is_identity_verified β status β Approved + user notified| Layer | Technology |
|---|---|
| Backend | Python 3.12, Django 6.0 |
| Real-time | Django Channels 4.x, Daphne (ASGI), WebSocket |
| Database | SQLite (dev) β PostgreSQL-ready |
| AI | Google Gemini API (google-generativeai) |
| Encryption | cryptography (Fernet) for workspace messages |
| Frontend | Vanilla HTML5, CSS3, FontAwesome 6 |
| Fonts | Google Fonts β Inter |
| Auth | Django AbstractUser with custom CustomUser model |
| Payments | bKash / SSLCommerz (simulated hooks) |
SkillCurrency/
βββ skill_currency/ # Django project config
β βββ settings.py # LOGIN_URL, CHANNELS, ENCRYPTION_KEY, etc.
β βββ urls.py # Root URL dispatcher
β βββ asgi.py # ASGI entry point (Daphne + Channels)
β βββ routing.py # WebSocket URL routing
β
βββ accounts/ # Core application (single-app architecture)
β βββ models.py # All 10 data models
β βββ views.py # All view logic
β βββ admin.py # Custom admin (identity sync, job CRUD)
β βββ urls.py # All URL patterns
β βββ consumers.py # WebSocket chat consumer
β βββ context_processors.py
β βββ management/commands/
β β βββ seed_jobs.py # 20 realistic seeded job posts
β βββ templates/accounts/
β βββ base.html
β βββ landing.html
β βββ marketplace_feed.html
β βββ _job_card_v3.html
β βββ job_detail.html
β βββ public_profile.html
β βββ financial_hub.html
β βββ workspace.html
β βββ ...
β
βββ static/
βββ css/style.css # Full design system
βββ js/ # WebSocket client
βββ images/
CustomUser
βββ SkillBadge (many) β SkillCategory
βββ JobPost (many) β SkillCategory
β βββ JobProposal (many) β CustomUser (applicant)
β βββ ServiceAgreement (1:1)
β βββ Milestone (many)
β βββ EncryptedMessage (many)
βββ Transaction (many)
βββ Notification (many)
# 1. Clone the repo
git clone https://github.com/NasorHidar/SkillCurrency.git
cd SkillCurrency
# 2. Create and activate a virtual environment
python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment variables
# Create a .env file or set these directly:
# GEMINI_API_KEY=your_google_gemini_key
# ENCRYPTION_KEY=your_fernet_key (auto-generated if omitted)
# 5. Apply migrations
python manage.py migrate
# 6. Create a superuser
python manage.py createsuperuser
# 7. Start the dev server
python manage.py runserver
Visit http://127.0.0.1:8000
python manage.py seed_jobs
Creates:
buyer1, skilled1, β¦) with password testpass123The command is idempotent β safe to run multiple times.
| URL | Name | Description |
|---|---|---|
/ |
landing_page |
Marketing homepage |
/signup/ |
signup |
User registration |
/signin/ |
signin |
Login |
/signout/ |
signout |
Logout |
/marketplace/ |
marketplace_feed |
Browse all jobs |
/marketplace/create/ |
create_job |
Post a new job |
/marketplace/job/<id>/ |
job_detail |
View job + submit proposal |
/profile/<username>/ |
public_profile |
User dashboard |
/skill-lab/ |
skill_lab_dashboard |
AI assessment hub |
/identity-vault/ |
identity_vault |
ID verification upload |
/financial-hub/ |
financial_hub |
Wallet & transactions |
/financial-hub/top-up/ |
top_up_wallet |
Add money to wallet |
/financial-hub/withdraw/ |
withdraw_funds |
Withdraw funds |
/financial-hub/invoice/<ref>/ |
invoice_receipt |
Transaction receipt |
/workspace/<id>/ |
workspace |
Active project workspace |
/settings/ |
settings_page |
Account settings |
/notifications/ |
notifications_page |
Notification center |
/admin/ |
β | Django admin panel |
models.py| Model | Purpose |
|---|---|
CustomUser |
Extended user: role, wallet, NID, verification status, avatar |
SkillCategory |
Category for jobs and badges |
SkillBadge |
Earned badge: user β category with level (1β3) |
AssessmentQuestion |
MCQ question linked to a category |
JobPost |
Job listing with type, budget, status |
JobProposal |
Bid submitted by a user on a job |
ServiceAgreement |
Contract created when a proposal is accepted |
Milestone |
Deliverable inside an agreement |
EncryptedMessage |
Fernet-encrypted chat message |
Transaction |
Wallet top-up, withdrawal, earnings record |
Notification |
In-app notification |
consumers.py)workspace_<agreement_id>Fernet before savingAccess at /admin/ with superuser credentials.
User uploads NID β Status: Pending
Admin ticks β
"Is Identity Verified"
β (save_model hook fires)
verification_status β "Approved"
User gets in-app notification β
Bulk actions available:
# Fork β clone β create branch
git checkout -b feature/your-feature
# Make changes, then
git commit -m "feat: describe your change"
git push origin feature/your-feature
# Open a Pull Request on GitHub
Ensure python manage.py check passes before submitting.
Distributed under the MIT License. See LICENSE for details.