A modern, responsive time tracking and work records management application built with Angular 20.3, Tailwind CSS, and PWA capabilities. Features signal-based state management, functional programming patterns, and beautiful light/dark mode themes.
- π¨ Modern UI - Clean, responsive interface with Tailwind CSS
- π Dark Mode - Beautiful light and dark themes with smooth transitions
- π± PWA Ready - Progressive Web App with offline capabilities
- β‘ Angular 20.3 - Latest Angular version with signals for reactive state management
- π― Functional Programming - Immutable state patterns and pure functions
- π Time Tracking - Comprehensive work records and attendance management
- π Dashboard - Visual stats cards for total hours, work days, and tasks
- π Real-time Updates - Reactive UI updates with Angular signals
- βΏ Accessible - WCAG compliant with proper ARIA labels
- Node.js (v18 or higher)
- npm (v9 or higher)
# Install dependencies
npm installTo start a local development server, run:
npm startNavigate to http://localhost:4200/. The application will automatically reload when you modify source files.
- Angular 20.3 - Latest framework with signals
- Tailwind CSS 3.4 - Utility-first CSS framework
- TypeScript 5.9 - Strongly typed JavaScript
- RxJS 7.8 - Reactive programming
- Service Worker - PWA support for offline functionality
src/
βββ app/
β βββ models/ # TypeScript interfaces and types
β β βββ work-record.model.ts
β βββ services/ # Business logic and state management
β β βββ theme.service.ts # Dark/light mode theming
β β βββ work-record.service.ts # Work records management
β βββ app.ts # Root component with signals
β βββ app.html # Main template
β βββ app.config.ts # App configuration with PWA
β βββ app.routes.ts # Routing configuration
βββ styles.css # Global Tailwind styles
βββ index.html # Main HTML file with PWA manifest
The application uses Angular signals for reactive state management:
// Read-only signal for theme state
readonly isDark = this.isDarkMode.asReadonly();
// Computed signal for derived values
readonly totalHours = computed(() => {
return this.filteredRecords().reduce((sum, record) => sum + record.hours, 0);
});Pure functions and immutable state updates:
addWorkRecord = (record: Omit<WorkRecord, 'id'>): void => {
const newRecord: WorkRecord = { ...record, id: this.generateId() };
this.workRecords.update(records => [...records, newRecord]);
};Persistent theme preference with system detection:
toggleTheme = (): void => {
this.isDarkMode.update(isDark => !isDark);
};- Create work records with task details, hours, and descriptions
- View records grouped by day with totals
- Filter by date range
- Track IN/OUT office status
- Display responsive table with row grouping
- Total hours worked
- Number of work days
- Total tasks completed
- Offline Support - Works without internet connection
- App Install - Can be installed on mobile devices
- Fast Loading - Service worker caching for instant loads
Edit tailwind.config.js to customize colors, spacing, and more:
theme: {
extend: {
colors: {
primary: {
500: '#0ea5e9',
// Add more shades...
},
},
},
}Update mock data in src/app/services/work-record.service.ts:
private generateMockData(): WorkRecord[] {
// Add your data here
}npm run buildng build --configuration=productionThe build artifacts will be stored in the dist/ directory with service worker enabled for offline support.
npm testng test --code-coverageThe application is production-ready and can be deployed to:
- Static Hosting: Netlify, Vercel, Firebase Hosting
- Cloud Platforms: AWS S3, Azure Static Web Apps, Google Cloud Storage
- Traditional Servers: Apache, Nginx
Just deploy the contents of the dist/project-handler/browser folder.
- Add authentication and user management
- Connect to real backend API
- Export reports to PDF/Excel
- Calendar view for work records
- Time tracking with start/stop timer
- Team collaboration features
- Notifications for daily standup reminders
- Analytics and insights dashboard
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
For questions or support, please open an issue in the repository.
Built with β€οΈ using Angular 20.3.0, Tailwind CSS, and modern web technologies.