A comprehensive Django-based web application for creating, managing, and displaying professional CVs. This application provides a complete solution for building and maintaining your career profile with an intuitive user interface.
- Features
- Technology Stack
- Project Structure
- Installation
- Configuration
- Running the Application
- Usage Guide
- Database Models
- URL Patterns
- Customization
- Deployment
- Contributing
- License
-
User Authentication
- Secure user registration and login
- Password reset capability
- Session management
- Protected routes for authenticated users
-
CV Builder
- Personal information management
- Education history tracking
- Work experience documentation
- Skills inventory with proficiency levels
- Portfolio projects showcase
- Language proficiency tracking
- Professional certifications
-
User Interface
- Responsive Bootstrap-based design
- Clean, professional layout
- Mobile-friendly interface
- Interactive forms with validation
- Flash messaging system
-
Data Management
- Create, Read, Update, Delete (CRUD) operations
- Inline form management for multiple entries
- Automatic timestamp tracking
- Image upload support for project screenshots
-
Security
- CSRF protection
- Password validation
- User permission checks
- Secure session handling
- Backend Framework: Django 4.2+
- Database: SQLite3 (default for development)
- Frontend: HTML5, CSS3, JavaScript
- CSS Framework: Bootstrap 5.3
- Icons: Font Awesome 6.4
- Template Engine: Django Templates
- Python Version: 3.8+
DjangoBasic/
|
|-- manage.py # Django management script
|-- requirements.txt # Python dependencies
|-- .gitignore # Git ignore rules
|
|-- cv_project/ # Main Django project
| |-- __init__.py # Package initialization
| |-- settings.py # Project settings
| |-- urls.py # Root URL configuration
| |-- wsgi.py # WSGI application
|
|-- cvs/ # CV management application
| |-- __init__.py # Package initialization
| |-- apps.py # App configuration
| |-- models.py # Database models
| |-- forms.py # Django forms
| |-- views.py # View functions
| |-- urls.py # URL patterns
| |-- admin.py # Admin configuration
|
|-- templates/ # HTML templates
| |-- base.html # Base template
| |-- registration/ # Authentication templates
| |-- cvs/ # CV application templates
|
|-- static/ # Static files
| |-- css/ # Custom stylesheets
| |-- js/ # JavaScript files
|
|-- media/ # Uploaded files (created at runtime)
| |-- project_images/ # Project screenshots
|
- Python 3.8 or higher
- pip (Python package manager)
- virtualenv (recommended for isolation)
-
Clone the Repository
git clone <repository-url> cd DjangoBasic
-
Create Virtual Environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Set Up Database
python manage.py migrate
-
Create Superuser (Optional)
python manage.py createsuperuser
-
Collect Static Files
python manage.py collectstatic
Create a .env file in the project root for environment-specific settings:
# Django Settings
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# Database (optional - uses SQLite by default)
# DATABASE_URL=postgres://user:password@localhost/dbname
# Email Settings (optional)
# EMAIL_HOST=smtp.gmail.com
# EMAIL_PORT=587
# EMAIL_USE_TLS=True
# EMAIL_HOST_USER=your-email@gmail.com
# EMAIL_HOST_PASSWORD=your-passwordKey settings can be modified in cv_project/settings.py:
- Debug Mode: Set
DEBUG = Falsefor production - Allowed Hosts: Update
ALLOWED_HOSTSfor your domain - Database: Configure database settings for production
- Static Files: Configure for static file serving
python manage.py runserverThe application will be available at http://localhost:8000
Access the Django admin at http://localhost:8000/admin/ after creating a superuser.
python manage.py test- Navigate to the homepage
- Click "Register" in the navigation
- Fill in the registration form with:
- Username (minimum 3 characters)
- Email address
- Password (minimum 8 characters)
- Submit the form
- After registration, you will be redirected to create your CV
- Fill in the comprehensive form with:
- Personal Information: Name, contact details, social links, summary
- Education: Add degrees, institutions, dates, grades
- Experience: Add work history with positions and achievements
- Skills: Add technical and soft skills with proficiency levels
- View CV: Navigate to "My CV" to see your complete profile
- Edit CV: Click "Edit CV" to modify any section
- Add Sections: Use the update form to add new education, experience, or skills
- Delete Entries: Use the delete checkbox to remove entries
Stores basic personal and contact information.
| Field | Type | Description |
|---|---|---|
| user | OneToOneField | Linked user account |
| first_name | CharField | First name |
| last_name | CharField | Last name |
| EmailField | Contact email | |
| phone | CharField | Phone number (optional) |
| address | TextField | Physical address (optional) |
| city | CharField | City (optional) |
| country | CharField | Country (optional) |
| URLField | LinkedIn profile (optional) | |
| github | URLField | GitHub profile (optional) |
| website | URLField | Personal website (optional) |
| summary | TextField | Professional summary (optional) |
Tracks educational background.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| institution | CharField | Educational institution |
| degree | CharField | Degree obtained |
| field_of_study | CharField | Field of study (optional) |
| start_date | DateField | Start date |
| end_date | DateField | End date (optional) |
| grade | CharField | Grade/GPA (optional) |
| description | TextField | Additional details (optional) |
Documents work experience.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| company | CharField | Company name |
| position | CharField | Job position |
| location | CharField | Job location (optional) |
| start_date | DateField | Start date |
| end_date | DateField | End date (optional) |
| is_current | BooleanField | Current position flag |
| description | TextField | Job responsibilities (optional) |
| achievements | TextField | Key achievements (optional) |
Records professional skills.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| name | CharField | Skill name |
| category | CharField | Skill category |
| proficiency | CharField | Proficiency level |
| years_of_experience | DecimalField | Years of experience (optional) |
| description | TextField | Description (optional) |
Showcases portfolio projects.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| title | CharField | Project title |
| description | TextField | Project description |
| technologies | CharField | Technologies used (optional) |
| project_url | URLField | Live project URL (optional) |
| github_url | URLField | GitHub repository (optional) |
| image | ImageField | Project screenshot (optional) |
| start_date | DateField | Start date (optional) |
| end_date | DateField | End date (optional) |
Tracks language proficiency.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| name | CharField | Language name |
| proficiency | CharField | Proficiency level |
| is_native | BooleanField | Native speaker flag |
Manages professional certifications.
| Field | Type | Description |
|---|---|---|
| user | ForeignKey | Linked user account |
| name | CharField | Certification name |
| issuing_organization | CharField | Issuing organization |
| issue_date | DateField | Issue date |
| expiry_date | DateField | Expiry date (optional) |
| credential_id | CharField | Credential ID (optional) |
| credential_url | URLField | Verification URL (optional) |
| description | TextField | Description (optional) |
| URL | View | Description |
|---|---|---|
/ |
home | Homepage |
/cvs/ |
cv_list | List user's CVs |
/cv/<int:pk>/ |
cv_detail | View CV details |
/cv/create/ |
cv_create | Create new CV |
/cv/update/ |
cv_update | Update CV |
/cv/delete/<int:pk>/ |
cv_delete | Delete CV |
| URL | View | Description |
|---|---|---|
/education/create/ |
education_create | Add education |
/education/update/<int:pk>/ |
education_update | Update education |
/education/delete/<int:pk>/ |
education_delete | Delete education |
| URL | View | Description |
|---|---|---|
/experience/create/ |
experience_create | Add experience |
/experience/update/<int:pk>/ |
experience_update | Update experience |
/experience/delete/<int:pk>/ |
experience_delete | Delete experience |
| URL | View | Description |
|---|---|---|
/skill/create/ |
skill_create | Add skill |
/skill/update/<int:pk>/ |
skill_update | Update skill |
/skill/delete/<int:pk>/ |
skill_delete | Delete skill |
| URL | View | Description |
|---|---|---|
/login/ |
login_view | User login |
/logout/ |
logout_view | User logout |
/register/ |
register | User registration |
- Create a new model in
cvs/models.py - Create a form in
cvs/forms.py - Add views in
cvs/views.py - Create templates
- Update URL patterns
- Run migrations
Edit static/css/style.css to customize:
- Colors and themes
- Typography
- Spacing
- Component styles
- Add the field to the model
- Update the form
- Add to the template
- Run migrations
-
Security Settings
- Set
DEBUG = False - Update
SECRET_KEY - Configure
ALLOWED_HOSTS - Enable HTTPS
- Set
-
Database Configuration
- Use PostgreSQL for production
- Configure database connection
- Run migrations
-
Static Files
- Configure static file serving
- Use WhiteNoise or CDN
- Run
collectstatic
-
WSGI Server
- Use Gunicorn or uWSGI
- Configure process workers
- Set up process management (systemd)
# Install production dependencies
pip install gunicorn whitenoise psycopg2-binary
# Collect static files
python manage.py collectstatic
# Start Gunicorn
gunicorn cv_project.wsgi:application --bind 0.0.0.0:8000Create a Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
RUN python manage.py collectstatic --noinput
RUN python manage.py migrate
EXPOSE 8000
CMD ["gunicorn", "cv_project.wsgi:application", "--bind", "0.0.0.0:8000"]- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
For questions or issues, please open a GitHub issue or contact the maintainers.