Picture Vault is a minimal, lightweight image upload and delivery server built with Express and SQLite. Perfect for quickly hosting images with anonymous uploads and easy management. If you own a domain, Picture Vault can double as your personal image CDN.
- Anonymous uploads (no accounts).
- Per-file deletion via one-time deletion password.
- Batch upload support.
- Image listing, metadata lookup, and HEAD checks.
- Simple file-based storage with SQLite index.
-
Install Node.js (>= 18).
-
Install dependencies:
npm install ```
-
Start the server:
npm run start
The app serves a simple test UI at /
and the API under /images
.
-
POST
/images/add
- multipart/form-data with field
photos
(supports multiple files) - returns JSON: list of uploaded files with
id
anddeletionPassword
- multipart/form-data with field
-
GET
/images/:id
- returns the image binary if found; 404 otherwise
-
HEAD
/images/:id
- 200 if the image exists, 404 if not; includes
Content-Type
- 200 if the image exists, 404 if not; includes
-
GET
/images/:id/meta
- returns
{ id, extn, size, modifiedAt }
for an image
- returns
-
GET
/images?limit=50&offset=0
- paginated listing; returns
{ total, limit, offset, items: [{ id, extn }] }
- paginated listing; returns
- Images are stored under
./images/
with names<id>.<extn>
. - Index is persisted in
images.db
(SQLite). No external database required. - Supported types:
image/jpeg
,image/jpg
,image/png
,image/gif
.