⚡
Challenges
One of the main challenges of this project was designing a system capable of storing and displaying programming portfolios in a multilingual format (4 languages). Additionally, the need for a system to manage large files (images, videos, and documents) with high security and advanced search capabilities was another challenge. Furthermore, implementing a fully dynamic Role & Permission system posed a difficult design challenge in this project. Also, designing a dynamic form‑builder system with the ability to create master forms in the admin panel without requiring coding, copy those master forms for use, and complete form fields based on field type and the user role responsible for filling each field, along with an appropriate real‑time notification system for field completion tasks assigned to each individual, were among the other complex aspects.
💡
Solutions
To solve the multilingual challenge, an architecture based on separate fields for each language was used so that content is stored independently. For file management, a cloud storage system was employed with automatic path segmentation based on file type and project ID. For advanced search, we utilized Django ORM capabilities with composite filters. For dynamic form creation, various input types were introduced in a separate database and used in the master form. Additionally, for creating copies from the master form, several separate models were used for storage, enabling higher management and completion capacity, and preventing edits to master forms from affecting partially filled copied forms. For the Role & Permission system, 5 different database models were used to define permissions, roles, users, and the relationships between permissions, roles, and users.
📚
Outcomes
Successful implementation of a complete platform with support for 4 languages, a 70% increase in file loading speed through CDN optimization, a 40% reduction in server response time with intelligent caching, and the creation of an active community of programmers who can put their portfolios together and form a programming team. Additionally, each programmer will have their personal resume available as a link from the site and as a PDF to present to their clients.
🔧
Technical Highlights
1- Multi language Architecture
2- Authentication & Role Based Access Control (RBAC)
3- Draft & Publishing Workflow
4- Smart File Management with Intelligent Pathing
5- Multimedia Content Management
6- Dynamic Fields with JavaScript
7- Multi step Stepper Form
8- Client Management
9- Use of JSONField for Semi structured Data
10- Query Optimization & Indexing
11- Visit Tracking & Statistics Management
12- Custom Filters & Template Tags
13- RESTful Architecture for AJAX
14- Team Certificates Management
15- Management Commands
16- Gallery Image Management with Multiple Uploads & 4 language Metadata
17- Video Management Supporting Files, Links, and 4 Languages
18- User Comments & Ratings System
19- Business Area & Project Activity Domain Management in 4 Languages
20- Project Team Members with 4 language Roles & Custom Roles
🏗️
Architecture
The project is designed based on Django's MTV architecture with a modular structure and includes separate applications: programmers (portfolio management), account (authentication and RBAC), and site_profile (contacts). The Model layer is implemented with support for 4 languages (Persian, English, Arabic, Turkish) using separate fields, Many-to-Many relationships, and JSONField. The View layer manages business logic with role-based separation, an automatic approval system, visit logging, and AJAX responses. The Template layer utilizes an 8‑step stepper, 4‑language tabs, dynamic fields, and custom filters. Routing is handled with separate URLs for each language and dynamic parameters. The RBAC system controls access using Role and Permission models. File storage is managed with intelligent pathing and automatic deletion from disk. Finally, the admin panel is available for model management and error logging using messages and tracebacks.
📐
Project Scale
The project includes 9 Django applications, approximately 60 database models with over 400 fields, and more than 70 views with appropriate support for 4 languages (Persian, English, Arabic, Turkish). Over 70 complete HTML templates have been implemented with an 8‑step stepper system, language tabs, and dynamic fields. The total codebase is approximately 25,000‑30,000 lines and includes an RBAC system, intelligent file management, Jalali‑to‑Gregorian date conversion, and management commands. The project supports multiple image and video uploads with 4‑language metadata, an automatic approval system, visit logging with duplicate‑counting prevention, and client management with search and auto‑creation capabilities. Overall, this is a complete and scalable project with a modular architecture and the ability to be extended for various needs.