smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
펫 피딩 트래커는 흩어진 엑셀 급식 기록을 차트로 변환해 반려동물의 섭취량을 손쉽게 추적하고 연간 건강 검진 기록도 관리한다
😸 Pet Feeding Tracker is a Ruby on Rails app that turns scattered Excel feeding logs into charts, so owners can easily track how much their pet eats over time. It also keeps annual health checkup rep
건강Ruby · HTMLGitHub @yuhruh온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기😸 Pet Feeding Tracker is a Ruby on Rails app that turns scattered Excel feeding logs into charts, so owners can easily track how much their pet eats over time. It also keeps annual health checkup reports organized in one place.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Pet Tracker v4 helps pet owners keep an accurate record of what their pets eat, how they feel about it, and how healthy they are. Log each meal, see which foods your pet really loves, keep track of the food in the cupboard, prepare for vet visits, and every month get the current Taiwan prices for the kibbles your pet loves most. Family and pet sitters can help: caregivers record feeding, litter, water and medicine with one tap on the Today page, everyone sees it straight away, and reminders say when a job might be due.README 전문 보기 ↗Pet Tracker v4 helps pet owners keep an accurate record of what their pets eat, how they feel about it, and how healthy they are. Log each meal, see which foods your pet really loves, keep track of the food in the cupboard, prepare for vet visits, and every month get the current Taiwan prices for the kibbles your pet loves most. Family and pet sitters can help: caregivers record feeding, litter, water and medicine with one tap on the Today page, everyone sees it straight away, and reminders say when a job might be due.
Who it's for: people caring for cats (or other pets) who want more than memory and receipts: what was served, how much was left, how eagerly it was eaten, and how weight and blood results change over time. It works in English, 繁體中文 and 日本語.
How it fits together:
Under the hood: a server-rendered Rails 8.1 app (Hotwire: Turbo and Stimulus, Tailwind CSS). The same pages serve desktop and mobile browsers, an installable PWA, and an Android app (pet_tracker_android/, Hotwire Native). Background jobs, caching and real-time updates run on the database through Solid Queue, Solid Cache and Solid Cable, so no Redis is needed. Production runs on Railway with PostgreSQL and deploys every push to main. For the full design, see ARCHITECTURE.md.
/doc (in English, 繁體中文 and 日本語) covering every feature below, with a table of contents.Pet Tracker compares what your pet's favorite kibbles cost in Taiwan's online shops, so you can buy the one your pet loves at the best price.
Which kibbles: the ones on your pet's favorite list with a favorite score of 30 or more, fed in the last 4 months (up to 5).
Where prices come from:
Other price-comparison sites such as feebee were ruled out because their terms forbid automated collection.
Matching the right product: shops name products differently from owners (e.g. 室內貓雙響宴 vs 室內雙饗宴). The app compares names character by character, and also checks the brand (under any name you've used for it, e.g. 喵皇奴 / Purrsuit), the species, every protein you named (鴨肉 is never taken for 雞肉), product-line codes like IN27, and the exact variant a price is for.
Fair comparison: each listing's bag size is read from its title (2kg, 300克, 3.3lb, 4kg 2包組…) and prices are ranked by NT$ per kg, cheapest first. Short-dated or repacked stock is left out.
Where to see it: open a pet's profile → Kibble Prices, or the link on the favorite list. Refresh now checks again, once a day. On the 1st of each month the results are also emailed to you, in 繁體中文, 日本語 or English depending on your time zone.
When nothing is found: if neither BigGo nor PChome lists a kibble, the page says "Can't find this kibble in shops right now."
Being a good neighbor: each search is made at most once a month (shared across users), requests are spaced 2 seconds apart and one pet is checked at a time, and BigGo's redirect links, which its robots.txt disallows, are never fetched.
Prices are approximate. Pet Tracker doesn't sell anything and isn't paid by these shops. The design, decisions and test results are recorded in KIBBLE_PRICE_PLAN.md.
Defined in config/recurring.yml and run by Solid Queue in production (server time, UTC):
| Job | When | What it does |
|---|---|---|
CareReminderJob | Every hour at :05 | Sends due litter box and water spot jobs and overdue doses to owners and caregivers who turned reminders on (9am in their own time zone for daily jobs) |
UserBackupJob | Every day at 3am | Emails a CSV backup to users who changed a tracker in the last day |
pet_weight_reminder | Every day at 9am | Reminds owners to weigh their pets, by email or LINE |
purge_expired_sessions | Every day at 4am | Deletes expired sign-in sessions |
MonthlyKibblePriceJob | The 1st of every month at 6am | Checks kibble prices for every pet fed kibble in the last 30 days and emails the results |
clear_solid_queue_finished_jobs | Every hour | Clears finished background jobs |
HouseholdPolicy), with the household always taken from the cat, box or spot, never from a form.rails-i18n and i18n-js (translations shared with Stimulus controllers).bin/jobs worker, see Procfile), with Thruster for HTTP caching and compression. A Kamal configuration is also included.main.You'll need Ruby 3.4.1 and Node.js (for Tailwind CSS and i18n-js). Development and tests use SQLite, so no database server is needed locally; production uses PostgreSQL.
git clone https://github.com/yuhruh/Pet_Feeding_Tracker_v4.git
cd Pet_Feeding_Tracker_v4
bundle install
npm install
bin/rails db:prepare
Procfile.dev):
bin/dev
bin/rails test # unit and integration tests
bin/rails test:system # browser tests (needs Chrome)
Sign-in with Google, LINE or GitHub needs their client IDs and secrets in the environment; email sign-in works without them. Android app notifications need the Firebase service account JSON in FIREBASE_SERVICE_ACCOUNT_JSON (on the web and worker services) and the project's google-services.json in pet_tracker_android/app/ (not committed); without them reminders go by LINE or email.
For step-by-step instructions, open Docs in the app's menu (/doc) or see USAGE.md.
| Where | What's in it |
|---|---|
/doc in the app (app/views/pages/doc.html.erb) | The usage guide for users, in all three languages. The account, pet, dry food, tracker and CSV import sections are written in the view; every other feature is a section under doc_page.feature_sections in config/locales/*.yml, so adding a feature to the guide means adding a section there in each language. |
| USAGE.md | The same usage guide as Markdown |
| ARCHITECTURE.md | How the app is built |
| HOUSEHOLDS_CAREGIVER_PLAN.md | Design and checkpoints for households, caregivers, the Today page and reminders |
| KIBBLE_PRICE_PLAN.md | Design, decisions and test results for the kibble price check |
Contributions are welcome! Please feel free to submit a pull request or open an issue.
This project is licensed under the MIT License.