- HTML 29.8%
- PHP 28.8%
- Vue 23.9%
- TypeScript 16.3%
- JavaScript 0.6%
- Other 0.6%
| .github | ||
| __mocks__/@inertiajs | ||
| app | ||
| bootstrap | ||
| config | ||
| coverage | ||
| database | ||
| dev-tools | ||
| docs | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .env.testing | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmessage-finance-templates | ||
| .nvmrc | ||
| .prettierrc | ||
| AGENTS.md | ||
| artisan | ||
| ASSESSMENT_README.md | ||
| ASSESSMENT_SUMMARY.md | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.lock | ||
| DEVLOG.md | ||
| eslint.config.js | ||
| IMPROVEMENT_CHECKLIST.md | ||
| jsconfig.json | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| phpunit.xml.dist | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| test-transactions.php | ||
| tsconfig.json | ||
| vite.config.js | ||
| vitest.config.ts | ||
| VUE_VUETIFY_ASSESSMENT.md | ||
ParenTOOL
ParenTOOL is a comprehensive web application designed to help parents in Sweden plan and manage their parental leave, household finances, and daily tasks. It combines a parental leave day tracker, a full financial suite (ledger, mortgages, credit cards, purchases, and balance charts), and a drag-and-drop task board — all within a single-user account that tracks both parents together.
🎯 Features
📅 Parental Leave Calendar
- Day-by-day leave tracker — each day is marked as a work day, parent 1 only, parent 2 only, or a double day (both parents)
- Color-coded cells per parent, configurable in User Settings
- Sticky summary showing total days used per parent
- Transfer day calculation when one parent exceeds their leave limit
- Batch Edit: update a range of calendar days at once via a dedicated batch edit form
✅ Tasks & Chores Board
- Drag-and-drop task board organised by schedule: unscheduled, weekly days, general recurrence intervals, and dated tasks
- Supported intervals: daily, weekly, monthly, quarterly, yearly, and specific dates
- Toggle task completion per day
- Category and tag management for tasks
💰 Financial Planning
📊 Dashboard
- Lazy-loaded overview cards for today's balance, current ledger summary, calendar stats, today's tasks, and upcoming tasks
📒 Ledger
- Combined income and expense view by month
- Surfaces virtual (recurring template), actualized (confirmed real), and deferred transactions side by side
🔁 Finance Templates
- Manage recurring income and expense templates
- Configurable interval rules: daily, weekly, monthly, yearly
📈 Balance
- Year and month balance overview with Chart.js charts
🏠 Mortgages
- Full mortgage lifecycle management
- Payment tracking with principal and interest breakdown
- Actualization of payments and interest rate change history
💳 Credit Cards
- Track credit card accounts and their current balances
🛒 Purchases
- Daily expense and purchase tracking with category support
⚙️ User Settings
- Configurable parent names and colours
- Parental leave day limits per parent
- Currency and number format preferences
- Theme selection: dark/light mode with multiple Material Design family choices
- Date cycle configuration
- Quick navigation shortcuts
🎨 User Experience
- Material Design 3: Modern, intuitive interface with Vuetify
- Dark/Light Themes: User-controlled theme switching
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Icon System: Material Design Icons (MDI)
🛠️ Tech Stack
Backend
- PHP 8.2+ - Modern PHP with strict typing
- Laravel 12 - Latest Laravel framework
- SQLite/MySQL - Database (SQLite for development, MySQL for production)
- Inertia.js - Modern monolith architecture
- Laravel Sanctum - API authentication
Frontend
- Vue 3 - Composition API with TypeScript
- TypeScript 5.9 - Full type safety
- Vuetify 3.10 - Primary UI component framework (Material Design)
- Pinia - State management with persistence
- Vite 6 - Lightning-fast build tool
- Chart.js - Data visualization (balance month view, mortgage burn-down chart)
- Tailwind CSS - Present as a utility dependency; Vuetify is the primary styling system
Development & Testing
- Pest 4 - Modern PHP testing framework
- Playwright - End-to-end browser testing
- Laravel Pint - Code formatting (Laravel style)
- ESLint + Prettier - JavaScript/TypeScript linting and formatting
DevOps
- GitHub Actions - CI/CD pipeline
- Automated Testing - Full test suite on every commit
- Automated Deployment - Zero-downtime deployments to production
📋 Requirements
- PHP: 8.2 or higher
- Composer: 2.x
- Node.js: 18.x or higher
- NPM: 9.x or higher
- Database: SQLite (dev) or MySQL 8.0+ (production)
- Web Server: Apache or Nginx (production)
🚀 Getting Started
Development Setup
-
Clone the repository
git clone https://github.com/niddelicious/parenting-tool.git cd parenting-tool -
Install PHP dependencies
composer install -
Install JavaScript dependencies
npm install -
Environment configuration
cp .env.example .env php artisan key:generate -
Database setup
touch database/database.sqlite php artisan migrate:fresh --seedNote
: After v1.0, migrations should be run with
php artisan migrateonly. Themigrate:freshcommand should only be used in development environments. -
Build frontend assets
npm run build -
Start development servers
# Option 1: Use Composer script (recommended) composer dev # Option 2: Manual # Terminal 1: Backend php artisan serve # Terminal 2: Frontend (hot reload) npm run dev # Terminal 3: Queue worker php artisan queue:listen -
Access the application
- Development: http://localhost:8000
- Vite HMR: http://localhost:5173
Production Deployment
Production deployment is automated via GitHub Actions. To deploy:
-
Merge to main branch
git checkout dev git pull origin dev # Make your changes and commit git checkout main git merge dev git push origin main -
Automated deployment runs
- Tests execute automatically
- Code formatting is verified
- Assets are built
- Application is deployed
- Health checks confirm deployment
-
Manual deployment steps (if needed)
# On production server cd /path/to/application git pull origin main composer install --no-dev --optimize-autoloader npm install --production npm run build php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache php artisan optimize
🧪 Testing
Run Tests
# All tests
php artisan test
# Specific test file
php artisan test tests/Feature/CalendarTest.php
# With coverage
php artisan test --coverage
# Filter by name
php artisan test --filter=calendar
Code Quality
# Format PHP code
./vendor/bin/pint
# Lint JavaScript/TypeScript
npm run lint
# Type check TypeScript
npx vue-tsc --noEmit
Browser Testing
# Run Playwright tests (if configured)
php artisan test --pest-plugin=browser
📚 Documentation
Comprehensive documentation is available in the /docs directory:
- Architecture - System design and technical decisions
- Backend - Laravel implementation details
- Frontend - Vue/Vuetify component documentation
- Procedures - Development workflows and deployment
- Dataflows - API patterns and state management
- Business Logic - Domain rules and calculations
See the Documentation Index for a complete overview.
🔄 Migration Policy (v1.0+)
Important: Starting from v1.0, this application is considered production-ready.
Development Environment
- Can still use
php artisan migrate:fresh --seedfor local testing - Seeds are available for generating test data
Production Environment
- Never use
migrate:fresh- data would be lost - Only use
php artisan migrateto run new migrations - All new database changes must be additive migrations
- Test migrations in development before deploying
Creating New Migrations
# Generate migration
php artisan make:migration add_column_to_table
# Always test in dev with fresh database
php artisan migrate:fresh --seed
php artisan test
# Then deploy with regular migrate
php artisan migrate
🤝 Contributing
Development Workflow
-
Create feature branch from
devgit checkout dev git pull origin dev git checkout -b feature/your-feature-name -
Make changes following code standards
- Write tests for new features
- Follow existing code patterns
- Update documentation as needed
-
Test locally
php artisan test npm run lint -
Commit and push
git add . git commit -m "feat: description of changes" git push origin feature/your-feature-name -
Create Pull Request to
devbranch- CI pipeline runs automatically
- Code review required
- All tests must pass
-
Merge to dev, then to
mainfor production deployment
Code Standards
- PHP: Laravel coding standards (enforced by Pint)
- JavaScript/TypeScript: ESLint + Prettier configuration
- Commits: Use conventional commit messages
- Tests: Required for all new features
- Type Safety: TypeScript strict mode enabled
📄 License
MIT License - See LICENSE file for details.
🙏 Acknowledgments
Built for Swedish parents navigating the complexities of parental leave planning.
📞 Support
For issues, questions, or contributions, please use the GitHub Issues page.
Version: 0.1.0
Last Updated: March 2026
Maintained By: niddelicious