Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
698970e
feat: add design document for Interne refactor
axelav Dec 6, 2025
c315c07
feat: add implementation plan for Interne refactor
axelav Dec 6, 2025
1cee450
feat: add TrailBase backend configuration and schema
axelav Dec 6, 2025
7c6a43b
feat: add Vite + React + TypeScript frontend foundation
axelav Dec 6, 2025
3cee2b7
feat: add TypeScript type definitions
axelav Dec 6, 2025
de8df37
feat: migrate utilities to TypeScript
axelav Dec 6, 2025
a97ed70
fix: resolve TypeScript errors and restore original utility behavior
axelav Dec 6, 2025
d8cc235
feat: copy CSS modules to frontend
axelav Dec 6, 2025
05fadcb
feat: add TrailBase API client and services
axelav Dec 6, 2025
640bbe2
feat: add React Query hooks for auth and entries
axelav Dec 6, 2025
255a713
feat: migrate Forms component to TypeScript
axelav Dec 6, 2025
94f623f
fix: restore original Forms component functionality
axelav Dec 6, 2025
fe38c1e
feat: migrate Footer and Header components to TypeScript
axelav Dec 6, 2025
cb0b63f
fix: restore full Header and Footer functionality from originals
axelav Dec 6, 2025
6479ed9
fix: remove unused imports and fix TypeScript errors in trailbase
axelav Dec 6, 2025
d3593bd
feat: add CreateEntryForm component with TypeScript and backend integ…
axelav Dec 6, 2025
2b4c6ee
feat: add authentication components with login/register functionality
axelav Dec 6, 2025
7140a61
feat: implement main App component with full functionality
axelav Dec 6, 2025
40e3ee0
fix: TypeScript mode type inference error
axelav Dec 6, 2025
cde696f
feat: add Docker configuration for deployment
axelav Dec 6, 2025
b172c4d
docs: update README with comprehensive documentation
axelav Dec 6, 2025
c357e77
chore: format properly
axelav Dec 6, 2025
0b75053
fix: Docker configuration to use official TrailBase image
axelav Dec 7, 2025
0c7bfeb
fix: authentication to match TrailBase API specification
axelav Dec 7, 2025
a74404c
fix: auth to use form-encoded data instead of JSON
axelav Dec 7, 2025
6dc3b13
chore: replace TrailBase with PocketBase in Docker config
axelav Dec 25, 2025
7d3b16f
chore: add pocketbase SDK dependency
axelav Dec 25, 2025
bb2cefd
feat: replace TrailBase client with PocketBase SDK
axelav Dec 25, 2025
5c6a0ed
refactor: update Entry types for PocketBase conventions
axelav Dec 25, 2025
ef192ff
refactor: update User types for PocketBase
axelav Dec 25, 2025
ec88f13
feat: rewrite auth service for PocketBase SDK
axelav Dec 25, 2025
65ae80c
feat: rewrite entries service for PocketBase SDK
axelav Dec 25, 2025
efdc4fd
chore: remove unused API types (SDK provides these)
axelav Dec 25, 2025
c8ccc20
refactor: update useAuth hook for PocketBase
axelav Dec 25, 2025
24a14c0
chore: update Vite proxy to PocketBase port
axelav Dec 25, 2025
0ea58c3
refactor: update components for PocketBase field names
axelav Dec 25, 2025
181bdaa
chore: remove TrailBase backend directory
axelav Dec 25, 2025
bab52a0
docs: add PocketBase setup instructions
axelav Dec 25, 2025
fd9540f
chore: update gitignore for PocketBase data directory
axelav Dec 25, 2025
6d6d0e1
chore: remove Next.js and TrailBase legacy files
axelav Dec 25, 2025
81eb094
docs: update README for PocketBase migration
axelav Dec 25, 2025
5fe5c68
chore: migrate from npm to pnpm
axelav Dec 25, 2025
96ce02e
chore: tidy
axelav Dec 26, 2025
ab598c6
fix: increment `visited` field on item click
axelav Dec 26, 2025
4daded3
fix: display issues
axelav Dec 26, 2025
ae8e1fe
chore: disable import/export temporarily
axelav Dec 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,6 @@ yarn-error.log*

# vercel
.vercel

# PocketBase data directory
pb_data/
132 changes: 128 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,135 @@
# Interne

## Getting Started
A spaced-repetition bookmark manager that resurfaces saved websites after configurable intervals.

First, run the development server:
## Features

- Save bookmarks with title, description, and custom revisit intervals
- Entropy-based algorithm resurfaces entries at optimal times
- Multi-user support with authentication
- Search and filter bookmarks
- Keyboard shortcuts (ESC to toggle filter, / for search)
- Responsive design

## Tech Stack

**Backend:**

- PocketBase (Go + SQLite)
- Built-in authentication
- Auto-generated REST APIs
- Admin UI for database management

**Frontend:**

- Vite + React 18 + TypeScript
- React Query for server state
- PocketBase JavaScript SDK
- CSS Modules for styling

## Development

### Prerequisites

- Node.js 20+
- pnpm (`npm install -g pnpm`)
- Docker & Docker Compose

### Setup

1. **Start PocketBase:**

```bash
docker compose up -d
```

2. **Configure PocketBase:**
- Open <http://localhost:8090/\_/>
- Create admin account
- Follow setup instructions in `scripts/setup-pocketbase.md`

3. **Install frontend dependencies:**

```bash
cd frontend
pnpm install
```

4. **Start development server:**

```bash
pnpm dev
```

5. **Access:**
- Frontend: <http://localhost:5173>
- PocketBase Admin: <http://localhost:8090/\_/>
- PocketBase API: <http://localhost:8090/api/>

### Project Structure

```
interne/
├── docker-compose.yml # PocketBase container config
├── frontend/ # Vite React app
│ ├── src/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── services/
│ │ ├── styles/
│ │ ├── types/
│ │ └── utils/
│ └── package.json
├── pb_data/ # PocketBase data (gitignored)
└── scripts/
└── setup-pocketbase.md
```

## Deployment

### Docker

1. **Update PocketBase URL** in production:

```bash
# Set in frontend/.env.production
VITE_POCKETBASE_URL=https://your-domain.com
```

2. **Build frontend:**

```bash
cd frontend
pnpm build
```

3. **Run with Docker Compose:**

```bash
docker compose up -d
```

4. **Serve frontend** with your preferred static file server (nginx, Caddy, etc.)

### VPS Deployment

1. Transfer files to VPS
2. Configure reverse proxy for both PocketBase API and frontend
3. Point domain to server
4. Configure HTTPS with Let's Encrypt

### Backups

PocketBase stores all data in the `pb_data` directory:

```bash
npm run dev
# Backup the entire pb_data directory
tar -czf backup-$(date +%Y%m%d).tar.gz pb_data/

# Or just the database
docker compose exec pocketbase cp /pb_data/data.db /pb_data/backup.db
```

Open [http://localhost:4200](http://localhost:4200) with your browser to see the result.
## License

MIT
162 changes: 0 additions & 162 deletions components/CreateEntryForm.js

This file was deleted.

18 changes: 0 additions & 18 deletions components/Footer.js

This file was deleted.

Loading
Loading