Browse Source

Merge master into issue#133

master
Nuša Pukšič 1 year ago
parent
commit
391e684d22
  1. 15
      .dockerignore
  2. 5
      .gitignore
  3. 15
      Dockerfile.local
  4. 15
      Dockerfile.next
  5. 15
      Dockerfile.prod
  6. 50
      README.md
  7. 1078
      bun.lock
  8. 7
      deno.json
  9. 2905
      deno.lock
  10. 18
      import_map.json
  11. 114
      package-lock.json
  12. 5
      package.json
  13. 5
      src/app.css
  14. 5
      src/lib/components/EditorArticle.svelte
  15. 8
      src/lib/components/LinkToArticle.svelte
  16. 2
      src/lib/components/Navigation.svelte
  17. 2
      src/lib/components/Preview.svelte
  18. 0
      src/lib/components/Publication.svelte
  19. 4
      src/lib/components/PublicationFeed.svelte
  20. 0
      src/lib/components/PublicationHeader.svelte
  21. 2
      src/routes/+page.svelte
  22. 49
      src/routes/about/+page.svelte
  23. 2
      src/routes/publication/+page.svelte
  24. BIN
      static/screenshots/Documentation.png
  25. BIN
      static/screenshots/JaneEyre.png
  26. BIN
      static/screenshots/LandingPage.png
  27. BIN
      static/screenshots/ResearchPaper.png
  28. BIN
      static/screenshots/TableOfContents.png
  29. BIN
      static/screenshots/ToC_icon.png
  30. BIN
      static/screenshots/YourRelays.png
  31. 12
      svelte.config.js

15
.dockerignore

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
node_modules
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
Makefile
helm-charts
.env
.editorconfig
.idea
coverage*

5
.gitignore vendored

@ -13,3 +13,8 @@ package-lock.json @@ -13,3 +13,8 @@ package-lock.json
# tests
/tests/e2e/html-report/*.html
/tests/e2e/test-results/*.last-run.json
# Deno
/.deno/
/deno_dir/
/import_map.lock.json

15
Dockerfile.local

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
FROM denoland/deno:alpine AS build
WORKDIR /app/src
COPY . .
RUN deno install
RUN deno task build
FROM denoland/deno:alpine AS release
WORKDIR /app
COPY --from=build /app/src/build/ ./build/
COPY --from=build /app/src/import_map.json .
ENV ORIGIN=http://localhost:3000
EXPOSE 3000
CMD [ "deno", "run", "--allow-env", "--allow-read", "--allow-net", "--import-map=import_map.json", "./build/index.js" ]

15
Dockerfile.next

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
FROM denoland/deno:alpine AS build
WORKDIR /app/src
COPY . .
RUN deno install
RUN deno task build
FROM denoland/deno:alpine AS release
WORKDIR /app
COPY --from=build /app/src/build/ ./build/
COPY --from=build /app/src/import_map.json .
ENV ORIGIN=https://$HOST
EXPOSE 3000
CMD [ "deno", "run", "--allow-env", "--allow-read", "--allow-net", "--import-map=import_map.json", "./build/index.js" ]

15
Dockerfile.prod

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
FROM denoland/deno:alpine AS build
WORKDIR /app/src
COPY . .
RUN deno install
RUN deno task build
FROM denoland/deno:alpine AS release
WORKDIR /app
COPY --from=build /app/src/build/ ./build/
COPY --from=build /app/src/import_map.json .
ENV ORIGIN=https://$HOST
EXPOSE 3000
CMD [ "deno", "run", "--allow-env", "--allow-read", "--allow-net", "--import-map=import_map.json", "./build/index.js" ]

50
README.md

@ -2,47 +2,63 @@ @@ -2,47 +2,63 @@
# Alexandria
Alexandria is a reader and writer for curated publications.
For a thorough introduction, please refer to our [project documention](https://next-alexandria.gitcitadel.eu/publication?d=gitcitadel-project-documentation-by-stella-v-1), viewable on Alexandria.
Alexandria is a reader and writer for curated publications, including e-books.
For a thorough introduction, please refer to our [project documention](https://next-alexandria.gitcitadel.eu/publication?d=gitcitadel-project-documentation-by-stella-v-1), viewable on Alexandria, or to the Alexandria [About page](https://next-alexandria.gitcitadel.eu/about).
## Issues and Patches
If you would like to suggest a feature or report a bug, or submit a patch for review, please use the [Nostr git interface](https://gitcitadel.com/r/naddr1qvzqqqrhnypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqyt8wumn8ghj7ur4wfcxcetjv4kxz7fwvdhk6tcqpfqkcetcv9hxgunfvyamcf5z) on our homepage.
## Developing
You can also contact us [on Nostr](https://njump.me/nprofile1qqsggm4l0xs23qfjwnkfwf6fqcs66s3lz637gaxhl4nwd2vtle8rnfqprfmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdaks5zhueg), directly.
Make sure that you have [Node.js](https://nodejs.org/en/download/package-manager) installed.
## Developing
Once you've cloned this repo, install dependencies with:
Make sure that you have [Node.js](https://nodejs.org/en/download/package-manager) (v22 or above) or [Deno](https://docs.deno.com/runtime/getting_started/installation/) (v2) installed.
Once you've cloned this repo, install dependencies with NPM:
```bash
npm install
```
then start a development server:
or with Deno:
```bash
deno install
```
then start a development server with Node:
```bash
npm run dev
```
or start the server and open the app in a new browser tab:
or with Deno:
```bash
npm run dev -- --open
deno task dev
```
## Building
> We have configured Alexandria to use the static adapter. To deploy your app with a different adapter, you will need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
Alexandria is configured to run on a Node server. The [Node adapter](https://svelte.dev/docs/kit/adapter-node) works on Deno as well.
To build a production version of your app, as a static site:
To build a production version of your app with Node, use:
```bash
npm run build
```
or with Deno:
```bash
deno task build
```
You can preview the (non-static) production build with:
```bash
npm run preview
```
or with Deno:
```bash
deno task preview
```
## Docker
This docker container performs the build.
@ -72,6 +88,20 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS @@ -72,6 +88,20 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS
1d83d736322f gc-alexandria "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:4174->80/tcp, [::]:4174->80/tcp gc-alexandria
```
## Docker + Deno
This application is configured to use the Deno runtime. A Docker container is provided to handle builds and deployments.
To build the app for local development:
```bash
docker build -t local-alexandria -f Dockerfile.local .
```
To run the local development build:
```bash
docker run -d -p 3000:3000 local-alexandria
```
## Testing
*These tests are under development, but will run. They will later be added to the container.*

1078
bun.lock

File diff suppressed because it is too large Load Diff

7
deno.json

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"importMap": "./import_map.json",
"compilerOptions": {
"allowJs": true,
"lib": ["dom", "dom.iterable", "dom.asynciterable", "deno.ns"]
}
}

2905
deno.lock

File diff suppressed because it is too large Load Diff

18
import_map.json

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
{
"imports": {
"he": "npm:he@1.2.x",
"@nostr-dev-kit/ndk": "npm:@nostr-dev-kit/ndk@2.11.x",
"@nostr-dev-kit/ndk-cache-dexie": "npm:@nostr-dev-kit/ndk-cache-dexie@2.5.x",
"@popperjs/core": "npm:@popperjs/core@2.11.x",
"@tailwindcss/forms": "npm:@tailwindcss/forms@0.5.x",
"@tailwindcss/typography": "npm:@tailwindcss/typography@0.5.x",
"asciidoctor": "npm:asciidoctor@3.0.x",
"d3": "npm:d3@7.9.x",
"nostr-tools": "npm:nostr-tools@2.10.x",
"tailwind-merge": "npm:tailwind-merge@2.5.x",
"svelte": "npm:svelte@5.0.x",
"flowbite": "npm:flowbite@2.2.x",
"flowbite-svelte": "npm:flowbite-svelte@0.44.x",
"flowbite-svelte-icons": "npm:flowbite-svelte-icons@2.0.x"
}
}

114
package-lock.json generated

@ -16,12 +16,12 @@ @@ -16,12 +16,12 @@
"asciidoctor": "3.0.x",
"d3": "^7.9.0",
"he": "1.2.x",
"nostr-tools": "2.10.x",
"playwright": "^1.50.1"
"nostr-tools": "2.10.x"
},
"devDependencies": {
"@playwright/test": "^1.50.1",
"@sveltejs/adapter-auto": "3.x",
"@sveltejs/adapter-node": "^5.2.12",
"@sveltejs/adapter-static": "3.x",
"@sveltejs/kit": "2.x",
"@sveltejs/vite-plugin-svelte": "4.x",
@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
"flowbite": "2.x",
"flowbite-svelte": "0.x",
"flowbite-svelte-icons": "2.x",
"playwright": "^1.50.1",
"postcss": "8.x",
"postcss-load-config": "6.x",
"prettier": "3.x",
@ -1125,6 +1126,64 @@ @@ -1125,6 +1126,64 @@
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@rollup/plugin-commonjs": {
"version": "28.0.2",
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz",
"integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
"estree-walker": "^2.0.2",
"fdir": "^6.2.0",
"is-reference": "1.2.1",
"magic-string": "^0.30.3",
"picomatch": "^4.0.2"
},
"engines": {
"node": ">=16.0.0 || 14 >= 14.17"
},
"peerDependencies": {
"rollup": "^2.68.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/@rollup/plugin-json": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
"integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.1.0"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/plugin-node-resolve": {
"version": "15.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
@ -1316,6 +1375,47 @@ @@ -1316,6 +1375,47 @@
"@sveltejs/kit": "^2.0.0"
}
},
"node_modules/@sveltejs/adapter-node": {
"version": "5.2.12",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.2.12.tgz",
"integrity": "sha512-0bp4Yb3jKIEcZWVcJC/L1xXp9zzJS4hDwfb4VITAkfT4OVdkspSHsx7YhqJDbb2hgLl6R9Vs7VQR+fqIVOxPUQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rollup/plugin-commonjs": "^28.0.1",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.0",
"rollup": "^4.9.5"
},
"peerDependencies": {
"@sveltejs/kit": "^2.4.0"
}
},
"node_modules/@sveltejs/adapter-node/node_modules/@rollup/plugin-node-resolve": {
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz",
"integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
"deepmerge": "^4.2.2",
"is-module": "^1.0.0",
"resolve": "^1.22.1"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^2.78.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@sveltejs/adapter-static": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz",
@ -2154,6 +2254,13 @@ @@ -2154,6 +2254,13 @@
"node": ">= 6"
}
},
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true,
"license": "MIT"
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@ -4708,6 +4815,7 @@ @@ -4708,6 +4815,7 @@
"version": "1.50.1",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.50.1.tgz",
"integrity": "sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.50.1"
@ -4726,6 +4834,7 @@ @@ -4726,6 +4834,7 @@
"version": "1.50.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.50.1.tgz",
"integrity": "sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
@ -4738,6 +4847,7 @@ @@ -4738,6 +4847,7 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,

5
package.json

@ -22,12 +22,12 @@ @@ -22,12 +22,12 @@
"asciidoctor": "3.0.x",
"d3": "^7.9.0",
"he": "1.2.x",
"nostr-tools": "2.10.x",
"playwright": "^1.50.1"
"nostr-tools": "2.10.x"
},
"devDependencies": {
"@playwright/test": "^1.50.1",
"@sveltejs/adapter-auto": "3.x",
"@sveltejs/adapter-node": "^5.2.12",
"@sveltejs/adapter-static": "3.x",
"@sveltejs/kit": "2.x",
"@sveltejs/vite-plugin-svelte": "4.x",
@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
"flowbite": "2.x",
"flowbite-svelte": "0.x",
"flowbite-svelte-icons": "2.x",
"playwright": "^1.50.1",
"postcss": "8.x",
"postcss-load-config": "6.x",
"prettier": "3.x",

5
src/app.css

@ -28,6 +28,11 @@ @@ -28,6 +28,11 @@
@apply hover:text-primary-400 dark:hover:text-primary-500 hover:border-primary-400 dark:hover:border-primary-500 hover:bg-gray-200 dark:hover:bg-gray-700;
}
/* Images */
.image-border {
@apply border border-primary-700;
}
/* Card */
div.card-leather {
@apply shadow-none text-primary-1000 border-s-4 bg-highlight border-primary-200 has-[:hover]:border-primary-700;

5
src/lib/components/EditorArticle.svelte

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<script lang='ts'>
export let html: string;
</script>

8
src/lib/components/LinkToArticle.svelte

@ -1,8 +0,0 @@ @@ -1,8 +0,0 @@
<script lang="ts">
export let content: string;
</script>
<button
id={`wikilink-v0-${content.toLocaleLowerCase().replaceAll(' ', '-')}`}
class="text-indigo-600 underline">{content}</button
>

2
src/lib/components/Navigation.svelte

@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
<NavHamburger class='btn-leather' />
</div>
<NavUl class='ul-leather'>
<NavLi href='/new/edit'>New Note</NavLi>
<NavLi href='/new/edit'>Publish</NavLi>
<NavLi href='/visualize'>Visualize</NavLi>
<NavLi href='/about'>About</NavLi>
<NavLi>

2
src/lib/components/Preview.svelte

@ -178,7 +178,7 @@ @@ -178,7 +178,7 @@
{/snippet}
{#snippet contentParagraph(content: string, publicationType: string)}
{#if publicationType === 'book'}
{#if publicationType === 'novel'}
<P class='whitespace-normal' firstupper={isSectionStart}>
{@html content}
</P>

0
src/lib/components/Article.svelte → src/lib/components/Publication.svelte

4
src/lib/components/PublicationFeed.svelte

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
import { filterValidIndexEvents } from '$lib/utils';
import { NDKRelaySet, type NDKEvent } from '@nostr-dev-kit/ndk';
import { Button, P, Skeleton, Spinner } from 'flowbite-svelte';
import ArticleHeader from './ArticleHeader.svelte';
import ArticleHeader from './PublicationHeader.svelte';
import { onMount } from 'svelte';
let { relays } = $props<{ relays: string[] }>();
@ -90,7 +90,7 @@ @@ -90,7 +90,7 @@
<ArticleHeader {event} />
{/each}
{:else}
<p class='text-center'>No articles found.</p>
<p class='text-center'>No publications found.</p>
{/if}
{#if !loadingMore && !endOfFeed}
<div class='flex justify-center mt-4 mb-8'>

0
src/lib/components/ArticleHeader.svelte → src/lib/components/PublicationHeader.svelte

2
src/routes/+page.svelte

@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
{:else}
<div class='leather w-full flex justify-end'>
<Button>
{`Showing articles from: ${getFeedTypeFriendlyName($feedType)}`}<ChevronDownOutline class='w-6 h-6' />
{`Showing publications from: ${getFeedTypeFriendlyName($feedType)}`}<ChevronDownOutline class='w-6 h-6' />
</Button>
<Dropdown class='w-fit p-2 space-y-2 text-sm'>
<li>

49
src/routes/about/+page.svelte

@ -1,15 +1,56 @@ @@ -1,15 +1,56 @@
<script lang='ts'>
import { Heading } from "flowbite-svelte";
</script>
<div class='w-full flex justify-center'>
<main class='main-leather flex flex-col space-y-4 max-w-2xl w-full mt-4 mb-4'>
<Heading tag='h1' class='h-leather mb-2'>About</Heading>
<p>Alexandria is an editor and generator for <a href="https://github.com/nostr-protocol/nips/pull/1600" class='underline'>curated publications</a> and will soon also be a reader for long-form articles and wiki pages.
It is produced by the <a href="https://wikistr.com/gitcitadel-project" class='underline'>GitCitadel project team</a>.</p>
<p>Alexandria is a reader and writer for <a href="https://github.com/nostr-protocol/nips/pull/1600" class='underline'>curated publications</a> (in Asciidoc), and will eventually also support long-form articles (Markdown) and wiki pages (Asciidoc). It is produced by the <a href="https://wikistr.com/gitcitadel-project" class='underline'>GitCitadel project team</a>.</p>
<p>Please submit support issues on the <a href="https://gitcitadel.com/r/naddr1qvzqqqrhnypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqy88wumn8ghj7mn0wvhxcmmv9uqq5emfw33kjarpv3jkcs83wav" class='underline'>project repo page</a> and follow us on <a href="https://github.com/ShadowySupercode/gitcitadel" class='underline'>GitHub</a> and <a href="https://geyser.fund/project/gitcitadel" class='underline'>Geyserfund</a>.</p>
<p>We are easiest to contact over our Nostr address <a href="https://njump.me/nprofile1qqsggm4l0xs23qfjwnkfwf6fqcs66s3lz637gaxhl4nwd2vtle8rnfqprfmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdaks5zhueg" class='underline'>npub1s3ht77dq4zqnya8vjun5jp3p44pr794ru36d0ltxu65chljw8xjqd975wz</a>.</p>
<Heading tag='h2' class='h-leather mb-2'>Overview</Heading>
<p>Alexandria opens up to the <a href="https://next-alexandria.gitcitadel.eu/" class='underline'>landing page</a>, where the user can: login (top-right), select whether to only view the publications hosted on the <a href="https://thecitadel.nostr1.com/" class='underline'>thecitadel document relay</a> or add in their own relays, and scroll/search the publications.</p>
<p><img src="/screenshots/LandingPage.png" alt="Landing page" class='image-border'></p>
<p><img src="/screenshots/YourRelays.png" alt="Relay selection" class='image-border'></p>
<p>There is also the ability to view the publications as a diagram, if you click on "Visualize", and to publish an e-book or other document (coming soon).</p>
<p>If you click on a card, which represents a 30040 index event, the associated reading view opens to the publication. The app then pulls all of the content events (30041s), in the order in which they are indexed, and displays them as a single document.</p>
<p>Each 30041 section is also a level in the table of contents, which can be accessed from the floating icon top-left in the reading view. This allows for navigation within the publication. (This functionality has been temporarily disabled.)</p>
<p><img src="/screenshots/ToC_icon.png" alt="ToC icon" class='image-border'></p>
<p><img src="/screenshots/TableOfContents.png" alt="Table of contents example" class='image-border'></p>
<Heading tag='h2' class='h-leather mb-2'>Typical use cases</Heading>
<Heading tag='h3' class='h-leather mb-2'>For e-books</Heading>
<p>The most common use for Alexandria is for e-books: both those users have written themselves and those uploaded to Nostr from other sources. The first minor version of the app, Gutenberg, is focused on displaying and producing these publications.</p>
<p>An example of a book is <a href="https://next-alexandria.gitcitadel.eu/publication?d=jane-eyre-an-autobiography-by-charlotte-bront%C3%83-v-third-edition" class='underline'>Jane Eyre</a></p>
<p><img src="/screenshots/JaneEyre.png" alt="Jane Eyre, by Charlotte Brontë" class='image-border'></p>
<Heading tag='h3' class='h-leather mb-2'>For scientific papers</Heading>
<p>Alexandria will also display research papers with Asciimath and LaTeX embedding, and the normal advanced formatting options available for Asciidoc. In addition, we will be implementing special citation events, which will serve as an alternative or addition to the normal footnotes.</p>
<p>Correctly displaying such papers, integrating citations, and allowing them to be reviewed (with kind 1111 comments), and annotated (with highlights) by users, is the focus of the second minor version, Euler.</p>
<p>Euler will also pioneer the HTTP-based (rather than websocket-based) e-paper compatible version of the web app.</p>
<p>An example of a research paper is <a href="https://next-alexandria.gitcitadel.eu/publication?d=less-partnering-less-children-or-both-by-j.i.s.-hellstrand-v-1" class='underline'>Less Partnering, Less Children, or Both?</a></p>
<p><img src="/screenshots/ResearchPaper.png" alt="Research paper" class='image-border'></p>
<Heading tag='h3' class='h-leather mb-2'>For documentation</Heading>
<p>Our own team uses Alexandria to document the app, to display our blog entries, as well as to store copies of our most interesting technical specifications.</p>
<p><img src="/screenshots/Documentation.png" alt="Documentation" class='image-border'></p>
</main>
</div>

2
src/routes/publication/+page.svelte

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<script lang="ts">
import Article from "$lib/components/Article.svelte";
import Article from "$lib/components/Publication.svelte";
import { TextPlaceholder } from "flowbite-svelte";
import type { PageData } from "./$types";
import { onDestroy } from "svelte";

BIN
static/screenshots/Documentation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
static/screenshots/JaneEyre.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
static/screenshots/LandingPage.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
static/screenshots/ResearchPaper.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

BIN
static/screenshots/TableOfContents.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
static/screenshots/ToC_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

BIN
static/screenshots/YourRelays.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

12
svelte.config.js

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
import adapter from "@sveltejs/adapter-static";
import adapter from "@sveltejs/adapter-node";
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
/** @type {import('@sveltejs/kit').Config} */
@ -8,14 +8,8 @@ const config = { @@ -8,14 +8,8 @@ const config = {
preprocess: [vitePreprocess()],
kit: {
// Static adapter
adapter: adapter({
pages: "build",
assets: "build",
fallback: "index.html",
precompress: false,
strict: true,
}),
// Deno adapter
adapter: adapter(),
alias: {
$lib: "src/lib",
$components: "src/lib/components",

Loading…
Cancel
Save