A simple web app that helps track points earned by kids and allows them to redeem points for rewards.
This project was created as a personal Raspberry Pi project to help manage my children's point-based reward system. I wanted to experiment with fully local vibe coding using my Radeon RX 7900 XTX, so I generated as much of the code as possible with local LLMs models while still reviewing every line of code to ensure it meets my expectations.
Important Security Notice: This application is designed for use in a home network environment only. It is not intended for public access or production use and is not secure. Do not deploy this application publicly.
initialxy-points is designed to help parents track their children's points that they earn through tasks and activities. It features a simple, intuitive interface for both parents and kids to manage rewards and point tracking.
- Point tracking for children's tasks and activities
- Parent-child role-based access control
- Activity logging
- Admin console for database management
Make sure to install dependencies:
npm install
First, run the admin console to initialize your database:
npm run admin
This will launch an admin console for managing users. Enter a SQLite database file path to get started (e.g., database.sqlite
). Run init-db
to create database tables.
During development, you can create a .env
file with the following variables:
NUXT_SESSION_PASSWORD
- A secret password for session encryption. When you run the development server for the first time, one will be generated for you.DB_PATH
- Path to the SQLite database file that you just created and initialized (e.g.,database.sqlite
).
Start the development server on http://localhost:3000
:
npm run dev
The admin console provides these commands:
help
- Show this help messageinit-db
- Initialize databaselist
- Show all users and their rolesadd-user <username> <password> [role]
- Add a new userdelete-user <username>
- Delete a userrename-user <oldUsername> <newUsername>
- Rename a userchange-user-role <username> <role>
- Change a user's roleset-password <username> <password>
- Set a new password for a usershow-logs <n>
- Show top n log entriesexit
- Exit the admin console
Follow Nuxt Deployment process. Build the application for production:
npm run build
Make sure you set NUXT_SESSION_PASSWORD
and DB_PATH
environment variables before running the node server. You can generate a new session password with:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Start the node server:
node .output/server/index.mjs
For detailed information about the available API endpoints, request/response formats, and authentication, see the API Documentation.
As mentioned above, the objective of this project is to exercise using local LLM for coding. The original objective was to generate near 100% of the code, but it quickly became apparent that it is not feasible. Overall in terms of lines of code, I'd estimate around 60% of the code was generated by LLM, though I have humanly reviewed all of them. Here are the tools that I used:
- Roo Code - with code indexing
- llama.cpp - For serving models
- ollama - for serving embedding model separately in CPU mode
- Qdrant - vector database for indexing with Roo Code
- Devstral (during early development)
- Qwen3-Coder (current model)
Here is the script I use for launching them using llama.cpp
#!/bin/bash
cd /home/initialxy/ML/llm/llama.cpp/build/bin
session_name="llamacppstart"
command1='docker run -p 6333:6333 qdrant/qdrant'
command2='ollama serve'
# command3='./llama-server -m ~/ML/llm/models/Devstral-Small-2507-IQ4_XS.gguf -ngl 999 -c 131072 -fa -ctk q8_0 -ctv q8_0 --prio 2 --temp 0.15 --repeat-penalty 1.0 --min-p 0.01 --top-k 64 --top-p 0.95 --alias devstral'
command3='./llama-server -m ~/ML/llm/models/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf --threads -1 -ngl 999 -c 262144 -fa -ctk q8_0 -ctv q8_0 --temp 0.7 --min-p 0.0 --top-p 0.80 --top-k 20 --repeat-penalty 1.05 -ot ".ffn_(up|down)_exps.=CPU" --alias qwen3-coder'
tmux new-session -d -s "$session_name"
tmux split-window -h -t "$session_name":0
tmux split-window -h -t "$session_name":0
tmux send-keys -t "$session_name":0.0 "$command1" C-m
tmux send-keys -t "$session_name":0.1 "$command2" C-m
tmux send-keys -t "$session_name":0.2 "$command3" C-m
tmux attach -t "$session_name"
This project is licensed under the MIT License. See the LICENSE file for details.