A small, self-hosted journal to log your professional activity day by day — so that when annual review season comes, you have facts instead of a blank memory.
Log what you worked on, what went well, what didn't, and the ideas worth keeping. Filter, search and export the period you need.
Scope: local / single-user by design. DevRewind is meant to run on your own machine. The API has no authentication and should not be exposed to a public network as-is.
- Frontend — Vue 3 + TypeScript + Vite
- Backend — PHP 8.1+ (plain PDO, no framework)
- Database — SQLite (with FTS5 full-text search)
- Entries with date, type, description and tags
- Chronological list with filters (type, date range, tag)
- Full-text search across entries
- CSV export over a date range (UTF-8 BOM, Excel-friendly)
- Per-type statistics
| Type | Meaning |
|---|---|
development |
New skills, projects delivered |
satisfaction |
Wins, positive moments |
insatisfaction |
Friction points, things to improve |
interest |
Observations, ideas, misc notes |
The quickest way (starts both servers, installs frontend deps if needed):
./start.shThen open http://localhost:5173.
# Backend — serves the API on http://localhost:8000
cd backend
php -S localhost:8000
# Frontend — dev server on http://localhost:5173 (proxies /api to :8000)
cd frontend
npm install
npm run devThe SQLite database (backend/database/devrewind.db) is created automatically on
first run from backend/database/init.sql.
Backend unit tests run against an in-memory SQLite database loaded from the real schema:
cd backend
composer install
composer testDevRewind/
├── backend/
│ ├── api/ # REST endpoints (entries.php)
│ ├── config/ # PDO/SQLite connection
│ ├── models/ # Entry model (validation + queries)
│ ├── database/ # Schema (init.sql) + SQLite file
│ └── tests/ # PHPUnit tests
└── frontend/
└── src/
├── components/ # Vue components
├── views/ # Pages
├── services/ # API client
└── types/ # TypeScript types
Note:
backend/.htaccess(error handling, blocking direct DB access) only applies under Apache. The PHP built-in server used for local dev ignores it.
start.sh is for development: it launches Vite (hot-reload) and the PHP built-in
server in the foreground, and stops both on Ctrl+C. For a "set it and forget it"
local setup, let Apache — already a background service — serve the app. There is
no process to keep alive: you only rebuild the frontend when it changes.
Requirements: Apache with mod_php (or PHP-FPM via mod_proxy_fcgi) and
AllowOverride All so the project's .htaccess files apply.
-
Build the frontend once:
cd frontend npm run build # outputs to frontend/dist/
-
Expose the project under the web root (a symlink keeps the code where it is):
sudo ln -sfn /path/to/DevRewind /var/www/html/DevRewind
-
Open http://localhost/DevRewind/. Apache serves
frontend/dist/index.html(via the root.htaccessDirectoryIndex) and runs the API directly at/DevRewind/backend/api/entries.php— same origin, matchingfrontend/.env.production.
Apache stays up on its own. Re-run npm run build after frontend changes;
backend changes are picked up immediately.
All your data lives in a single SQLite file — back it up by copying it:
cp backend/database/devrewind.db backend/database/devrewind.db.backupCeCILL-B Free Software License Agreement — see LICENSE.