A Flutter application designed to track and manage job placements and opportunities. JobSprint allows users to view, add, edit, and delete job placement records with comprehensive filtering and persistent storage capabilities.
Version: 1.0.0
JobSprint is a mobile application that helps users organize and track job placement opportunities. It provides an intuitive interface to manage job listings with detailed information including company details, work type, package, qualifications, and location-based filtering.
- View Job Placements: Browse all available job placements with detailed information
- Add New Jobs: Create new job placement records with comprehensive details
- Edit Placements: Update existing job placement information
- Delete Records: Remove outdated or irrelevant placements
- City-based Filtering: Filter placements by location to find jobs in specific cities
- Persistent Storage: All data is automatically saved using SharedPreferences
- Beautiful UI: Modern gradient design with an intuitive user interface
- Responsive Design: Adapts to different screen sizes
lib/
โโโ main.dart # Application entry point
โโโ src/
โโโ assets/
โ โโโ logo.png # App logo
โ โโโ background.png # Background image
โโโ features/
โโโ authentication/
โโโ presentation/
โ โโโ screens/
โ โโโ splashscreen.dart # Splash/Loading screen
โ โโโ homepage.dart # Main job listings screen
โ โโโ add_screen.dart # Add new job placement form
โ โโโ edit_screen.dart # Edit job placement form
โโโ widgets/
โโโ fragment_holder.dart # Navigation controller & data models
- Purpose: Application entry point
- What it does: Initializes the Flutter app with MaterialApp configuration
- Features:
- Sets app theme with custom color scheme
- Disables debug banner
- Sets initial route to SplashScreen
- Defines global Material design theme
- Purpose: Loading/Welcome screen shown on app startup
- What it does:
- Displays a 3-second splash screen with gradient background
- Shows app logo and loading indicator
- Preloads job placement data from storage
- Navigates to main home screen after loading
- UI Elements:
- Gradient background (Navy to Teal)
- App logo (200px)
- Loading spinner
- Version display (v1.0)
- Copyright notice
- Purpose: Main screen displaying all job placements
- What it does:
- Lists all job placements in card format
- Implements city-based filtering with dropdown
- Provides edit and delete functionality for each placement
- Has action button to add new placements
- Key Components:
- Color Palette: Defines custom colors (kPrimary, kSecondary, kAccent, kHighlight)
- AppBar: Displays "Job Placements" title with logo and add button
- City Filter: Dropdown to filter jobs by location
- Job Cards: Display job details with gradient background
- Shows: Company name, location, department, package, work type, company size, position type, qualification
- Edit and Delete buttons for each card
- Background: Layered background image with semi-transparent overlay
- Purpose: Form to add new job placement records
- What it does:
- Provides 8 input fields for comprehensive job information
- Validates and creates new HomeItem objects
- Adds location to cities list for filtering
- Returns to home screen after submission
- Saves updated data to persistent storage
- Input Fields:
- Name - Company/Job name
- Location - Job location/city
- Department - Company department
- Work Type - Remote, On-site, Hybrid, etc.
- Package - Salary/compensation package
- Company Size - Number of employees
- Position Type - Full-time, Part-time, Contract, etc.
- Qualification - Required qualifications
- UI Features:
- Scrollable form with white container
- Professional input fields with borders
- "Add Item" button with primary color styling
- Purpose: Form to edit existing job placement records
- What it does:
- Pre-populates form fields with existing job data
- Allows modification of all job details
- Updates the job item in the list
- Handles city list updates if location changes
- Prevents duplicate city entries
- Saves changes to persistent storage
- Key Logic:
- Retrieves job by index from items list
- Initializes TextEditingControllers with current values
- Properly disposes controllers to prevent memory leaks
- Checks for duplicate cities before adding new locations
- Purpose: Navigation management and data models
- What it does:
- Defines the HomeItem data model
- Manages navigation between different screens (/Home, /Add, /Edit)
- Handles data loading and saving via SharedPreferences
- Maintains global data state (cities and data lists)
- HomeItem Model:
- Properties: name, location, department, workType, package, companySize, positionType, qualification
- Methods:
toJson()for serialization,fromJson()for deserialization
- Data Persistence Functions:
- loadList(): Loads saved job placements and cities from SharedPreferences on app startup
- savedList(): Saves job placements and cities list to SharedPreferences after any CRUD operation
- Navigation:
- Uses nested Navigator with route-based navigation
- Routes:
/Home(main list),/Add(create),/Edit(update)
Color Palette Used:
- Primary (kPrimary):
#093C5D- Navy Blue (AppBar, buttons) - Secondary (kSecondary):
#3B7597- Steel Blue (dropdown background) - Accent (kAccent):
#6FD1D7- Light Blue (tags, borders) - Highlight (kHighlight):
#5DF8D8- Cyan (important text, details) - White (kWhite): Card backgrounds and text
UI/UX Elements:
- Gradient backgrounds for visual appeal
- Rounded corners for modern look
- Emoji icons for visual categorization
- Cards with borders and shadows
- Responsive padding and spacing
The project uses the following Flutter packages:
cupertino_icons: ^1.0.8 # iOS-style icons
flutter_svg: ^2.3.0 # SVG image support
google_fonts: ^8.1.0 # Google Fonts integration
image_picker: ^1.2.2 # Image selection
flutter_launcher_icons: ^0.14.4 # App icon generation
shared_preferences: ^2.5.5 # Local data persistence- Technology: SharedPreferences
- Storage Keys:
My_Data: JSON array of all job placement objectsMy_Cities: JSON array of unique city names
- Data Format: JSON serialization/deserialization
- Persistence: Data persists across app sessions
- Flutter SDK 3.11.5 or higher
- Dart SDK (included with Flutter)
- Clone the repository
- Navigate to the project directory
- Run
flutter pub getto install dependencies - Run
flutter runto start the application
- Android:
flutter build apk - iOS:
flutter build ios - Web:
flutter build web - Windows:
flutter build windows - macOS:
flutter build macos - Linux:
flutter build linux
- Launch App: The splash screen appears for 3 seconds while loading data
- View Jobs: Main page displays all job placements in scrollable list
- Filter by City: Use the dropdown at the top to filter jobs by location
- Add Job: Tap the '+' icon in AppBar to add a new placement
- Edit Job: Click the edit icon on any card to modify details
- Delete Job: Click the delete (trash) icon to remove a placement
- Data Saved: All changes are automatically saved to local storage
SplashScreen (3s)
โ
loadList() โ Fetch from SharedPreferences
โ
FragmentHolder (Navigation Hub)
โโ HomeScreen (View & Filter)
โ โโ Add Button โ AddScreen
โ โโ Edit Button โ EditScreen
โ โโ Delete Button โ Remove & Save
โโ AddScreen (Create)
โ โโ Add Button โ Save to List & Storage
โโ EditScreen (Update)
โโ Edit Button โ Update List & Storage
Add/Edit Operations:
- User fills form fields
- New/Updated HomeItem object created
- Item added/updated in items list
- City added to cities list (if new)
savedList()called to persist data- Navigation returns to HomeScreen
Delete Operation:
- User clicks delete icon
- Item removed from items list
- City removed from cities list
savedList()called to persist changes- UI updates with setState()
HomeItem {
String name; // Company name
String location; // Job location
String department; // Company department
String workType; // Work arrangement type
String package; // Compensation package
String companySize; // Number of employees
String positionType; // Job type (FT/PT/Contract)
String qualification; // Required qualifications
}- The app uses a simple state management approach with setState
- No external state management library (Provider, Riverpod, etc.) is used
- Navigation is handled through named routes using nested Navigator
- All UI components use Flutter's built-in Material Design widgets
- Responsive design uses MediaQuery for adaptive layouts
- No network/API integration (local storage only)
- No user authentication system
- No cloud synchronization
- Limited data validation on form inputs
- No image upload for companies
- Integration with job APIs (LinkedIn, Indeed, etc.)
- User authentication and profile management
- Cloud synchronization across devices
- Advanced filtering (salary range, experience level)
- Job application tracking
- Notifications for new opportunities
- Export to PDF/Excel
- Dark mode support
- Multi-language support
This project is private and not publicly licensed.
For issues or feature requests, please contact the development team.