Guiding children's behavior and family routines β together.
An open-source web application for organizing family tasks, behavior rules, and rewards.
OpenFamilyCompass is an open-source solution designed for parents to manage kids chores and promote good behavior and habbits. It combines task management, behavior points, and a plus/minus system in a child-friendly, intuitive interface. The development is transparent and community-driven.
This project is in a very early stage. User experiences, feature and process ideas and collaboration is highly appreciated.
- π¨βπ©βπ§βπ¦ Multi-User System with three roles: Admin, Parents, Children
- π Task Management with one-time and recurring tasks (daily, weekly, monthly)
- β Points System with flexible point allocation by parents
- ποΈ Reward Shop for children to redeem their points
- π Habit Tracking for positive behaviors
β οΈ Penalty Points for negative behavior- π Points History for accountability
- π€ Avatar System (predefined + upload option)
- Backend: Java + Spring
- Frontend: Thymeleaf, Bootstrap
- Security: Spring Security with password-based authentication
- Database: PostgreSQL 16
- Build Tool: Maven
- Containerization: Docker (PostgreSQL)
- Java 21 or higher (LTS)
- Maven 3.6+
- Docker & Docker Compose
- Optional: IDE (IntelliJ IDEA, Eclipse, VS Code)
Prerequisites: Docker & Docker Compose
# Clone repository
git clone https://github.com/openfamilycompass/openfamilycompass.git
cd openfamilycompass
# Copy environment template (optional, for custom credentials)
cp .env.example .env
# Start services
docker-compose up -dThe application will be available at: http://localhost:8080
Latest Release Image: ghcr.io/openfamilycompass/openfamilycompass:latest
To use a specific version:
# In docker-compose.yml
image: ghcr.io/openfamilycompass/openfamilycompass:1.0.0-alphaPrerequisites: Java 21+, Maven 3.6+, Docker (for PostgreSQL)
# Clone repository
git clone https://github.com/openfamilycompass/openfamilycompass.git
cd openfamilycompass
# Start PostgreSQL
docker-compose up -d postgres
# Build application
mvn clean install
# Run application
mvn spring-boot:runThe application will be available at: http://localhost:8080
After the first startup, an admin account is automatically created:
- Username:
admin - Password:
admin
The application supports push notifications to Android devices for real-time updates. See PUSH_NOTIFICATIONS_README.md for setup instructions.
Quick Setup:
- Create a Firebase project
- Download
google-services.jsonβandroid-app/app/ - Download
firebase-service-account.jsonβsrc/main/resources/ - Restart the server
Official Docker images are available at GitHub Container Registry (GHCR):
# Pull latest image
docker pull ghcr.io/openfamilycompass/openfamilycompass:latest
# Pull specific version
docker pull ghcr.io/openfamilycompass/openfamilycompass:1.0.0-alphaDocker images are built automatically for each release with:
- β Full Maven build & test suite
- β Docker health checks
- β Multi-layer caching for fast builds
This project uses GitHub Actions for:
- Build & Test: Runs on every push to detect issues early
- Docker Build & Push: Automatically builds and pushes images on release tags
- Health Checks: Verifies Docker container startup and basic functionality
To create a new release and build Docker image:
- Go to Actions β Create Release (or trigger manually)
- Enter version in semantic format (e.g.,
1.0.0-alpha,1.0.0) - Workflow will:
- Create git tag
- Build & test application
- Build & push Docker image to GHCR
- Create GitHub Release
# Or create tag manually
git tag -a v1.0.0-alpha -m "Release version 1.0.0-alpha"
git push origin v1.0.0-alpha- User management
- Task, reward, and habit management
- Approve/reject tasks
- Approve reward requests
- Record positive habits
- Assign bonus and penalty points
- View tasks and mark as completed
- View points balance
- Redeem rewards in shop
- View points history
OpenFamilyCompass/
βββ src/
β βββ main/
β β βββ java/com/family/kidschores/
β β β βββ config/ # Configuration (Security, Web)
β β β βββ controller/ # Web Controllers
β β β βββ init/ # Data Initialization
β β β βββ model/ # Domain Models
β β β βββ repository/ # JPA Repositories
β β β βββ service/ # Business Logic
β β β βββ KidsChoresApplication.java
β β βββ resources/
β β βββ static/ # CSS, JS, Images
β β βββ templates/ # Thymeleaf Templates
β β βββ application.yml # Configuration
β βββ test/ # Tests
βββ docker-compose.yml # PostgreSQL Setup
βββ pom.xml # Maven Dependencies
βββ README.md
- User: User accounts (Admin, Parent, Child)
- Child: Child profiles with avatar and points balance
- Task: Tasks (one-time or recurring)
- Reward: Rewards in shop
- RewardRedemption: Redeemed rewards
- Habit: Positive habits
- Penalty: Penalty points
- PointTransaction: History of all point movements
- Create new children (Admin)
- Define tasks (one-time or recurring)
- Set up rewards in shop
- Define positive habits
- Approve/reject tasks from children
- Process reward requests
- Assign penalty points when needed
- Log in with first name and password
- View task overview
- Mark tasks as completed
- Wait for parental approval
- Redeem points for rewards in shop
- View points history
The system automatically creates recurring tasks:
- Daily: Every day at midnight
- Weekly: Weekly on the same day of the week
- Monthly: Monthly on the same day
A scheduler job runs daily at 0:00 and creates due tasks.
Children can choose an avatar from:
- Predefined Avatars: cat, dog, bear, lion, elephant, giraffe, panda, unicorn
- Custom Uploads: Images can be uploaded (max. 5MB)
Avatars are stored under: uploads/avatars/
The most important settings in application.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/openfamilycompass_db
username: openfamilycompass_user
password: openfamilycompass_password
server:
port: 8080
app:
admin:
default-username: admin
default-password: "admin"
avatars:
upload-dir: uploads/avatarsmvn testPossible future features:
- Mobile App (React Native / Flutter)
- Calendar view for tasks
- Push notifications
- Statistics and reports
- Family leaderboard
- Task templates
- Export points history (PDF/Excel)
- Multi-tenancy (multiple families)
- Gamification (Badges, Achievements)
- Image upload for rewards not yet implemented
- No email notifications
For security considerations, deployment guidelines, and best practices, please refer to SECURITY.md.
Important: Before deploying to production, ensure you have read and implemented all security recommendations.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.
The AGPL is a strong copyleft license that ensures this software remains free and open source:
- β Free to use - for personal, educational, and non-profit use
- β Modification allowed - you can adapt it to your needs
- β Distribution allowed - share it with others
β οΈ Network use = distribution - if you run a modified version on a server, you must share the source codeβ οΈ Share-alike - derivatives must use the same licenseβ οΈ No proprietary forks - you cannot make closed-source versions
We chose AGPL to ensure that:
- Open Source stays open - improvements benefit everyone
- No proprietary SaaS - companies can't create closed commercial products without sharing back
- Community collaboration - all users can see and improve the code
- Fair use - if you use it, you contribute back
If you want to use OpenFamilyCompass in a commercial product without releasing your source code, please contact us about a commercial license.
We welcome contributions! Please see AUTHORS for guidelines on how to contribute to this project.
This project follows these principles:
- Transparent development - all changes are tracked in git history
- Security first - especially for data handling
- Community-driven - your feedback and ideas are welcome
Good luck motivating your children! π