Django Module for Project Exchange

Job ID: 37990094

Budget: $30 – $250 CAD

I'm seeking a skilled Python developer to create an intuitive, user-friendly Django 4.2 module for exchanging projects.

Description:
Develop a Django 4.2 module for project exchange, allowing users to post, browse, and bid on projects. The module emphasizes user empowerment, transparency, and collaboration. It includes user authentication, project posting, browsing, and bidding features, as well as email notifications. The module does not require graphic design; only minimal HTML is needed. Only Python programming is needed, with no graphic design required.

### Technical Specification: Django 4.2 Module for Project Exchange

#### Objective:
Develop a module for the Django 4.2 framework that enables users to exchange projects efficiently and effectively, similar to the functionality of freelance.com.

#### Key Features:
1. **User Registration and Authentication**: Users can register, log in, and log out securely.
2. **Project Posting**: Users can post projects with details such as project name, description, type, cost, and related company.
3. **Project Browsing and Filtering**: Users can browse and filter projects based on project type, status, and other relevant criteria.
4. **User Profile Management**: Users can manage their profiles, including updating personal information and viewing their posted projects.
5. **Project Status Tracking**: Users can track the status of their posted projects, including sub-status updates.
6. **Company Profiles**: Companies can create profiles with information such as name, description, address, email, and telephone number.
7. **Email Notifications**: Users receive email notifications for important events, such as project status updates and new project postings.

#### Philosophy of Operation:
1. **User Empowerment**: Any registered user can post a project on the exchange, starting with the "draft" stage and progressing to "published" once they are ready for others to view and bid on.
2. **Transparency and Accessibility**: Once a project is in the "published" stage, it becomes visible to all users, ensuring transparency and equal access to project opportunities.
3. **Bid Submission**: Any user can submit a bid for a published project, specifying the cost and timeframe for completion. This allows for competitive bidding and ensures that the project owner receives a variety of proposals to choose from.
4. **Decision Making**: The project owner has the authority to review all bids and select the one that best fits their requirements. Once a bid is accepted, the project moves into the "ordered" status, and the publication is removed from the general list, signaling that the project has been awarded.
5. **Communication and Collaboration**: Throughout the process, communication between the project owner and bidders is encouraged to clarify requirements, negotiate terms, and ensure successful project completion.
6. **Flexibility and Adaptability**: The module is designed to be flexible, allowing for customization of project types, statuses, and other parameters to accommodate various project requirements and user preferences.
7. **Security and Privacy**: The module prioritizes the security and privacy of user data, implementing best practices to protect sensitive information and ensure a safe environment for project exchange.

#### Database Tables:
1. **project_types**:
- typename VARCHAR
- typedescriptor VARCHAR

2. **project_status**:
- statusname VARCHAR
- statusdescriptor VARCHAR

3. **project_substatus**:
- substatusname VARCHAR
- substatusdescriptor VARCHAR

4. **companies**:
- companyname VARCHAR
- companydescription VARCHAR
- companyaddress VARCHAR
- companyemail VARCHAR
- companytelephone VARCHAR

5. **users**:
- usernickname VARCHAR
- userfirstname VARCHAR
- usersecondname VARCHAR
- usergroupid INTEGER
- usercompanyid INTEGER
- useremail VARCHAR
- usertelephone VARCHAR

6. **projects**:
- projectname VARCHAR
- projectdescriptor VARCHAR
- projectfoldername VARCHAR
- projectcompanyid INTEGER
- projectcontractorid INTEGER
- projecttypeid INTEGER
- projectstatusid INTEGER
- projectsubstatusid INTEGER
- projectcost INTEGER

#### Technical Requirements:
1. **Language**: Python 3.x
2. **Framework**: Django 4.2
3. **Database**: PostgreSQL
4. **User Interface**: Use Django's built-in templates for a responsive and user-friendly interface.
5. **Security**: Implement best practices for user authentication, data validation, and protection against common web vulnerabilities.
6. **Testing**: Write comprehensive unit tests to ensure the module's functionality is robust and error-free.
7. **Documentation**: Provide clear documentation on how to install, configure, and use the module.

#### Additional Considerations:
1. **Scalability**: Design the module to handle a large number of users and projects efficiently.
2. **Customization**: Allow for easy customization of project types, status, and other relevant parameters.
3. **Administration**: Implement best practices to improve the module's visibility and accessibility.


#### Note:
Ensure the module is well-documented and easily extendable for future updates and enhancements.
Related categories: Python Django Software Architecture