Skip to content

9highlander/DjangoResumeUploader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django CV Management Application

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.

Table of Contents

  1. Features
  2. Technology Stack
  3. Project Structure
  4. Installation
  5. Configuration
  6. Running the Application
  7. Usage Guide
  8. Database Models
  9. URL Patterns
  10. Customization
  11. Deployment
  12. Contributing
  13. License

Features

Core Features

  • 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

Additional Features

  • 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

Technology Stack

  • 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+

Project Structure

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
|

Installation

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)
  • virtualenv (recommended for isolation)

Step-by-Step Installation

  1. Clone the Repository

    git clone <repository-url>
    cd DjangoBasic
  2. Create Virtual Environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Set Up Database

    python manage.py migrate
  5. Create Superuser (Optional)

    python manage.py createsuperuser
  6. Collect Static Files

    python manage.py collectstatic

Configuration

Environment Variables

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-password

Settings Customization

Key settings can be modified in cv_project/settings.py:

  • Debug Mode: Set DEBUG = False for production
  • Allowed Hosts: Update ALLOWED_HOSTS for your domain
  • Database: Configure database settings for production
  • Static Files: Configure for static file serving

Running the Application

Development Server

python manage.py runserver

The application will be available at http://localhost:8000

Admin Interface

Access the Django admin at http://localhost:8000/admin/ after creating a superuser.

Running Tests

python manage.py test

Usage Guide

User Registration

  1. Navigate to the homepage
  2. Click "Register" in the navigation
  3. Fill in the registration form with:
    • Username (minimum 3 characters)
    • Email address
    • Password (minimum 8 characters)
  4. Submit the form

Creating Your CV

  1. After registration, you will be redirected to create your CV
  2. 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

Managing Your CV

  • 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

Database Models

PersonalInfo

Stores basic personal and contact information.

Field Type Description
user OneToOneField Linked user account
first_name CharField First name
last_name CharField Last name
email EmailField Contact email
phone CharField Phone number (optional)
address TextField Physical address (optional)
city CharField City (optional)
country CharField Country (optional)
linkedin URLField LinkedIn profile (optional)
github URLField GitHub profile (optional)
website URLField Personal website (optional)
summary TextField Professional summary (optional)

Education

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)

Experience

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)

Skill

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)

Project

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)

Language

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

Certification

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 Patterns

Main URLs

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

Education URLs

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

Experience URLs

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

Skill URLs

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

Authentication URLs

URL View Description
/login/ login_view User login
/logout/ logout_view User logout
/register/ register User registration

Customization

Adding New CV Sections

  1. Create a new model in cvs/models.py
  2. Create a form in cvs/forms.py
  3. Add views in cvs/views.py
  4. Create templates
  5. Update URL patterns
  6. Run migrations

Modifying the Design

Edit static/css/style.css to customize:

  • Colors and themes
  • Typography
  • Spacing
  • Component styles

Adding Custom Fields

  1. Add the field to the model
  2. Update the form
  3. Add to the template
  4. Run migrations

Deployment

Production Checklist

  1. Security Settings

    • Set DEBUG = False
    • Update SECRET_KEY
    • Configure ALLOWED_HOSTS
    • Enable HTTPS
  2. Database Configuration

    • Use PostgreSQL for production
    • Configure database connection
    • Run migrations
  3. Static Files

    • Configure static file serving
    • Use WhiteNoise or CDN
    • Run collectstatic
  4. WSGI Server

    • Use Gunicorn or uWSGI
    • Configure process workers
    • Set up process management (systemd)

Example Production Setup

# 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:8000

Docker Deployment

Create 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"]

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License. See the LICENSE file for details.

Support

For questions or issues, please open a GitHub issue or contact the maintainers.


About

A Django web up for uploading a resume

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published