- ebooks permission (create, per poet); the upload button only for L2/L1 moderators with it (and admins). - Files kept by SHA-256 in DIVAN_FILES_DIR (ab/cd/<sha>.<ext>; one copy per file), up to 100 MB, kind read from the bytes; details in PostgreSQL indexed by poet and trigram (title, text of text books); search shows e-books. - An upload is a revision (entity 'ebook') through L2 -> L1 -> admin; unpublished files only for moderators; approved details committed to divan-data (divan/<poet>/ebooks/<id>.txt). - ای بکس on the poet page; /ebook/<id>: PDF in the browser viewer, EPUB with epub.js, text, archive.org embed. - README: e-books and the file store (attach growable block storage or an S3 bucket via rclone). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
651 B
JSON
24 lines
651 B
JSON
{
|
|
"name": "divan-web",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Divan website (Astro, server-rendered) over the Divan API",
|
|
"scripts": {
|
|
"dev": "astro dev --port 4200",
|
|
"build": "astro build",
|
|
"start": "node dist/server/entry.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@astrojs/node": "^11.1.7",
|
|
"@fontsource/noto-naskh-arabic": "^5.3.0",
|
|
"@fontsource/noto-nastaliq-urdu": "^5.3.0",
|
|
"@tiptap/core": "^3.31.4",
|
|
"@tiptap/extension-document": "^3.31.4",
|
|
"@tiptap/extension-text": "^3.31.4",
|
|
"@tiptap/extensions": "^3.31.4",
|
|
"@tiptap/pm": "^3.31.4",
|
|
"astro": "^7.3.8",
|
|
"epubjs": "^0.3.93"
|
|
}
|
|
}
|