Skip to content

A flask web-app used to help users track applications to job postings, also allowing users connect with other users and also share opportunities with each other

License

Notifications You must be signed in to change notification settings

Mechamorph1903/Application-Tracker

Repository files navigation

🎯 InternIn - Your Personal Internship Tracking Hub

Python Flask SQLite License

A modern, feature-rich Flask web application designed to help students and job seekers organize, track, and optimize their internship search journey. Built by students, for students! πŸš€

⚠️ Copyright Notice: This project is the original work of DEN and is protected under Apache 2.0 License. While the code is open source for educational purposes, please respect the license terms and provide proper attribution if you use any part of this codebase.

πŸŽ₯ Project Videos

πŸ“Š Project Presentation

🎬 Watch the Project Presentation

πŸ–₯️ Project Demo

🎬 Watch the Project Demo


πŸ“Έ Application Screenshots

🏠 Landing Page

Landing Page

πŸ“Š Dashboard

Dashboard

πŸ” Login Page

Login Page

πŸ‘€ Profile Page

Profile Page

βš™οΈ Settings Page

Settings Page


✨ Features

πŸ” Authentication & User Management

  • Secure user registration and login system
  • Password hashing with Werkzeug security
  • Session management with Flask-Login
  • Email-Based Password Reset: Secure forgot password functionality with token-based verification
  • Password change functionality with strength validation

πŸ“Š Application Tracking

  • Smart Application Management: Track internship applications with detailed status updates
  • Advanced Status System: Applied, Interviewing, Offered, Rejected, Accepted, Withdrawn, Waitlist
  • Next Action Tracking: Set and track follow-up actions with dates
  • Contact Management: Store recruiter and company contacts as structured data
  • Rich Notes System: Add detailed notes with auto-save functionality

πŸ‘€ User Profiles & Social Features

  • Complete User Profiles: Personal information, education details, bio
  • Profile Pictures: Upload custom profile pictures with fallback to initials
  • Social Media Integration: Connect up to 6 social media accounts (14 platforms supported)
  • Major Selection: Choose from 200+ academic majors with Select2 integration
  • Privacy Controls: Manage profile visibility and data sharing

βš™οΈ Advanced Settings

  • Tabbed Settings Interface: User settings and app preferences
  • Theme Customization: Light, dark, and auto themes
  • Notification Preferences: Email, reminders, and social notifications
  • Data Export: Export applications in CSV/Excel format
  • Timezone Support: Multiple timezone options

🎨 Modern UI/UX

  • Responsive Design: Works on desktop, tablet, and mobile
  • Glass Morphism: Modern glass-effect UI components
  • Dynamic Navigation: Smart back button with navigation stack
  • Interactive Elements: Hover effects, animations, and transitions
  • Font Awesome Icons: 6000+ icons for better visual experience

πŸ“± Application Details

  • Comprehensive Application View: All details in one place
  • Status Badges: Color-coded status indicators
  • Description Modal: Popup modal for detailed job descriptions
  • Contact Cards: Organized contact information display
  • Interactive Elements: Click-to-edit notes and details

πŸ› οΈ Tech Stack

  • Backend: Flask 2.3+, SQLAlchemy, Flask-Login
  • Frontend: HTML5, CSS3, JavaScript (ES6+)
  • Database: SQLite with JSON fields for complex data
  • Libraries:
    • Select2 for enhanced dropdowns
    • Font Awesome for icons
    • Pandas for data export (optional)
  • Security: Werkzeug password hashing, CSRF protection

πŸš€ Quick Start

Prerequisites

  • Python 3.8 or higher
  • pip package manager

Installation

  1. Clone the repository

    git clone https://github.com/YOUR_USERNAME/internship-tracker.git
    cd internship-tracker
  2. Create and activate virtual environment

    # Windows
    python -m venv venv
    venv\Scripts\activate
    
    # macOS/Linux
    python3 -m venv venv
    source venv/bin/activate
  3. Install dependencies

    pip install -r requirements.txt
  4. Run the application

    python run.py
  5. Open your browser Navigate to http://127.0.0.1:5000

πŸ”§ Alternative Setup (Scripts)

For faster setup, use the provided scripts:

Windows:

setup.bat

macOS/Linux:

chmod +x setup.sh
./setup.sh

πŸ“ Project Structure

internship-tracker/
β”‚
β”œβ”€β”€ app/                          # Main application package
β”‚   β”œβ”€β”€ __init__.py              # App factory and configuration
β”‚   β”œβ”€β”€ models.py                # Database models (User, Internship, Settings)
β”‚   β”‚
β”‚   β”œβ”€β”€ auth/                    # Authentication blueprint
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── routes.py            # Login, register, logout routes
β”‚   β”‚
β”‚   β”œβ”€β”€ applications/            # Application management
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── routes.py            # CRUD operations for applications
β”‚   β”‚
β”‚   β”œβ”€β”€ profile/                 # User profile management
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── routes.py            # Profile viewing and editing
β”‚   β”‚
β”‚   β”œβ”€β”€ settings/                # Settings management
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── routes.py            # User and app settings
β”‚   β”‚
β”‚   β”œβ”€β”€ templates/               # Jinja2 templates
β”‚   β”‚   β”œβ”€β”€ layout.html          # Base template
β”‚   β”‚   β”œβ”€β”€ landing.html         # Landing page
β”‚   β”‚   β”œβ”€β”€ home.html            # Dashboard
β”‚   β”‚   β”œβ”€β”€ applications.html    # Applications list
β”‚   β”‚   β”œβ”€β”€ application-details.html
β”‚   β”‚   β”œβ”€β”€ profile.html
β”‚   β”‚   β”œβ”€β”€ settings.html
β”‚   β”‚   └── ...
β”‚   β”‚
β”‚   └── static/                  # Static assets
β”‚       β”œβ”€β”€ css/                 # Stylesheets
β”‚       β”‚   β”œβ”€β”€ layout.css       # Base styles
β”‚       β”‚   β”œβ”€β”€ applications.css
β”‚       β”‚   β”œβ”€β”€ profile.css
β”‚       β”‚   └── ...
β”‚       β”œβ”€β”€ js/                  # JavaScript files
β”‚       β”‚   β”œβ”€β”€ applications.js
β”‚       β”‚   β”œβ”€β”€ settings.js
β”‚       β”‚   β”œβ”€β”€ nav.js
β”‚       β”‚   └── majors.json      # Academic majors data
β”‚       └── uploads/             # User uploaded files
β”‚           └── profile_pictures/
β”‚
β”œβ”€β”€ instance/                    # Instance-specific files
β”‚   └── internships.db          # SQLite database
β”‚
β”œβ”€β”€ run.py                       # Application entry point
β”œβ”€β”€ requirements.txt             # Python dependencies
β”œβ”€β”€ .gitignore                   # Git ignore rules
β”œβ”€β”€ LICENSE                      # Apache 2.0 license
└── README.md                    # This file

πŸ“Š Database Schema

User Model

  • Personal information (name, email, phone)
  • Education details (school, major, graduation year)
  • Profile customization (bio, profile picture)
  • Social media links (up to 6 platforms)
  • Privacy and notification settings

Internship Model

  • Application details (company, position, status)
  • Dates (applied, next action due)
  • Contact information (JSON field)
  • Notes and descriptions
  • Status tracking with 7 different states

UserSettings Model

  • Theme preferences
  • Notification settings
  • Privacy controls
  • Data export preferences

🎨 Features Showcase

🏠 Landing Page

  • Modern hero section with animated statistics
  • Feature highlights with icons
  • Call-to-action buttons
  • Responsive navigation

πŸ“‹ Application Management

  • List View: Grid layout with status indicators
  • Detail View: Comprehensive application information
  • Add/Edit Forms: Dynamic forms with validation
  • Search & Filter: Find applications quickly

πŸ‘€ User Profile

  • Profile Display: Clean, card-based layout
  • Social Links: Dynamic social media integration
  • Edit Mode: In-place editing with form validation
  • Profile Pictures: Upload with preview and fallback

βš™οΈ Settings Dashboard

  • Tabbed Interface: User settings and app preferences
  • Form Validation: Real-time validation feedback
  • AJAX Updates: Smooth, no-reload updates
  • Data Export: One-click export functionality

πŸ”’ Security Features

  • Password Security: Werkzeug hashing with salt
  • Email-Based Password Reset: Secure token-based password reset with expiration
  • Input Validation: Server-side validation for all forms
  • File Upload Security: Secure file handling for profile pictures
  • Session Management: Secure session handling with Flask-Login
  • CSRF Protection: Built-in protection against cross-site attacks

πŸ“± Responsive Design

InternIn is fully responsive and works seamlessly across:

  • Desktop: Full-featured experience
  • Tablet: Optimized layouts for medium screens
  • Mobile: Touch-friendly interface with mobile navigation

πŸ“ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


πŸŽ‰ Credits

InternIn was built by students, for students. Special thanks to:

  • Flask Community for the excellent web framework
  • Font Awesome for the comprehensive icon library

πŸ“ž Support

If you have questions or need help: Contact me(daniel.anorue@usm.edu), elyon (elyon.aganah@usm.edu) or neville(neville.onsomu@usm.edu)


Built with ❀️ by students, for students

A DEN Special β„’

⭐ Star this repo if you found it helpful!

About

A flask web-app used to help users track applications to job postings, also allowing users connect with other users and also share opportunities with each other

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •