Skip to content

NeveuGregor/DevRewind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevRewind

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.

Stack

  • Frontend — Vue 3 + TypeScript + Vite
  • Backend — PHP 8.1+ (plain PDO, no framework)
  • Database — SQLite (with FTS5 full-text search)

Features

  • 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

Entry types

Type Meaning
development New skills, projects delivered
satisfaction Wins, positive moments
insatisfaction Friction points, things to improve
interest Observations, ideas, misc notes

Getting started

The quickest way (starts both servers, installs frontend deps if needed):

./start.sh

Then open http://localhost:5173.

Or run each side manually

# 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 dev

The SQLite database (backend/database/devrewind.db) is created automatically on first run from backend/database/init.sql.

Tests

Backend unit tests run against an in-memory SQLite database loaded from the real schema:

cd backend
composer install
composer test

Project structure

DevRewind/
├── 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.

Run it persistently (Apache)

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.

  1. Build the frontend once:

    cd frontend
    npm run build      # outputs to frontend/dist/
  2. 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
  3. Open http://localhost/DevRewind/. Apache serves frontend/dist/index.html (via the root .htaccess DirectoryIndex) and runs the API directly at /DevRewind/backend/api/entries.php — same origin, matching frontend/.env.production.

Apache stays up on its own. Re-run npm run build after frontend changes; backend changes are picked up immediately.

Backup

All your data lives in a single SQLite file — back it up by copying it:

cp backend/database/devrewind.db backend/database/devrewind.db.backup

License

CeCILL-B Free Software License Agreement — see LICENSE.

About

Local activity journal to prep annual reviews — PHP/SQLite API + Vue 3 frontend

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors