Parental tool for Swedish parents https://parentool.nidde.nu
  • HTML 29.8%
  • PHP 28.8%
  • Vue 23.9%
  • TypeScript 16.3%
  • JavaScript 0.6%
  • Other 0.6%
Find a file
2026-05-27 23:00:21 +02:00
.github update agents 2026-05-02 23:08:17 +02:00
__mocks__/@inertiajs add Vitests 2026-05-04 21:38:04 +02:00
app add Tasks archive 2026-05-27 23:00:21 +02:00
bootstrap fix schedule 2026-02-06 11:04:00 +01:00
config Persist Ledger type-filter state to UserSettings (#210) 2026-04-12 21:06:05 +02:00
coverage add Vitests 2026-05-04 21:38:04 +02:00
database add Tasks archive 2026-05-27 23:00:21 +02:00
dev-tools dev-tools 2025-11-20 12:44:43 +01:00
docs TransactionDialog 2026-05-20 22:36:11 +02:00
public Convert existing application into an installable PWA (Progressive Web App) (#195) 2026-04-02 12:15:47 +02:00
resources add Tasks archive 2026-05-27 23:00:21 +02:00
routes add Tasks archive 2026-05-27 23:00:21 +02:00
storage Feature/deferred expenses (#30) 2025-07-26 14:42:13 +02:00
tests final refactor 2026-05-09 01:18:08 +02:00
.editorconfig add logging, registration and settings 2025-05-07 19:04:00 +02:00
.env.example fix schedule 2026-02-06 11:04:00 +01:00
.env.testing update deploy workflow (#63) 2025-08-31 00:26:10 +02:00
.gitattributes export CHANGELOG.md 2026-04-01 21:32:07 +02:00
.gitignore chore: ignore bootstrap cache files (packages.php, services.php) to avoid dev-only provider errors in production 2025-10-25 22:59:33 +02:00
.gitmessage-finance-templates WIP 2025-10-07 16:03:34 +02:00
.nvmrc complet templates 2025-10-08 22:21:18 +02:00
.prettierrc feat: Add Credit Card feature (#74) 2025-09-14 15:17:47 +02:00
AGENTS.md Always show Ledger bottom sections; split CHANGELOG into user/dev logs (#201) 2026-04-06 00:14:37 +02:00
artisan Feature/deferred expenses (#30) 2025-07-26 14:42:13 +02:00
ASSESSMENT_README.md Add comprehensive README for Vue/Vuetify assessment package 2026-05-02 21:28:15 +00:00
ASSESSMENT_SUMMARY.md Add executive summary for Vue/Vuetify assessment 2026-05-02 21:25:53 +00:00
CHANGELOG.md add Tasks archive 2026-05-27 23:00:21 +02:00
composer.json adjust dev environ 2026-02-07 15:36:38 +01:00
composer.lock adjust dev environ 2026-02-07 15:36:38 +01:00
DEVLOG.md add Tasks archive 2026-05-27 23:00:21 +02:00
eslint.config.js final refactor 2026-05-09 01:18:08 +02:00
IMPROVEMENT_CHECKLIST.md fix lint warnings, step 1 & 2 of 4 2026-05-08 00:24:05 +02:00
jsconfig.json fix lint warnings, step 1 & 2 of 4 2026-05-08 00:24:05 +02:00
package-lock.json update package lock 2026-05-10 16:56:22 +02:00
package.json eslint update 2026-05-07 21:46:29 +02:00
phpunit.xml refactoring namespaces 2025-10-12 00:24:51 +02:00
phpunit.xml.dist Actualize fixes (#78) 2025-09-13 03:38:28 +02:00
postcss.config.js add logging, registration and settings 2025-05-07 19:04:00 +02:00
README.md docs: Update README to accurately reflect current features and architecture (#161) 2026-03-19 02:28:02 +01:00
tailwind.config.js add logging, registration and settings 2025-05-07 19:04:00 +02:00
test-transactions.php lnp 2026-05-09 01:22:44 +02:00
tsconfig.json build optimization 2025-07-25 01:18:29 +02:00
vite.config.js add optimize and lazy load 2026-05-06 21:47:26 +02:00
vitest.config.ts add Vitests 2026-05-04 21:38:04 +02:00
VUE_VUETIFY_ASSESSMENT.md Complete Vue.js and Vuetify architecture assessment with comprehensive report 2026-05-02 21:24:12 +00:00

ParenTOOL

CI/CD Pipeline

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

  1. Clone the repository

    git clone https://github.com/niddelicious/parenting-tool.git
    cd parenting-tool
    
  2. Install PHP dependencies

    composer install
    
  3. Install JavaScript dependencies

    npm install
    
  4. Environment configuration

    cp .env.example .env
    php artisan key:generate
    
  5. Database setup

    touch database/database.sqlite
    php artisan migrate:fresh --seed
    

    Note

    : After v1.0, migrations should be run with php artisan migrate only. The migrate:fresh command should only be used in development environments.

  6. Build frontend assets

    npm run build
    
  7. 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
    
  8. Access the application

Production Deployment

Production deployment is automated via GitHub Actions. To deploy:

  1. 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
    
  2. Automated deployment runs

    • Tests execute automatically
    • Code formatting is verified
    • Assets are built
    • Application is deployed
    • Health checks confirm deployment
  3. 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:

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 --seed for local testing
  • Seeds are available for generating test data

Production Environment

  • Never use migrate:fresh - data would be lost
  • Only use php artisan migrate to 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

  1. Create feature branch from dev

    git checkout dev
    git pull origin dev
    git checkout -b feature/your-feature-name
    
  2. Make changes following code standards

    • Write tests for new features
    • Follow existing code patterns
    • Update documentation as needed
  3. Test locally

    php artisan test
    npm run lint
    
  4. Commit and push

    git add .
    git commit -m "feat: description of changes"
    git push origin feature/your-feature-name
    
  5. Create Pull Request to dev branch

    • CI pipeline runs automatically
    • Code review required
    • All tests must pass
  6. Merge to dev, then to main for 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