mirror of
https://github.com/luminous-devs/lume.git
synced 2024-10-01 09:21:07 +00:00
commit
67afeac198
21
apps/web/.gitignore
vendored
Normal file
21
apps/web/.gitignore
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
47
apps/web/README.md
Normal file
47
apps/web/README.md
Normal file
@ -0,0 +1,47 @@
|
||||
# Astro Starter Kit: Minimal
|
||||
|
||||
```sh
|
||||
npm create astro@latest -- --template minimal
|
||||
```
|
||||
|
||||
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/minimal)
|
||||
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/minimal)
|
||||
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/minimal/devcontainer.json)
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||
## 🚀 Project Structure
|
||||
|
||||
Inside of your Astro project, you'll see the following folders and files:
|
||||
|
||||
```text
|
||||
/
|
||||
├── public/
|
||||
├── src/
|
||||
│ └── pages/
|
||||
│ └── index.astro
|
||||
└── package.json
|
||||
```
|
||||
|
||||
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||
|
||||
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
|
||||
|
||||
Any static assets, like images, can be placed in the `public/` directory.
|
||||
|
||||
## 🧞 Commands
|
||||
|
||||
All commands are run from the root of the project, from a terminal:
|
||||
|
||||
| Command | Action |
|
||||
| :------------------------ | :----------------------------------------------- |
|
||||
| `npm install` | Installs dependencies |
|
||||
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||
| `npm run build` | Build your production site to `./dist/` |
|
||||
| `npm run preview` | Preview your build locally, before deploying |
|
||||
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||
|
||||
## 👀 Want to learn more?
|
||||
|
||||
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
8
apps/web/astro.config.mjs
Normal file
8
apps/web/astro.config.mjs
Normal file
@ -0,0 +1,8 @@
|
||||
import { defineConfig } from 'astro/config';
|
||||
|
||||
import tailwind from "@astrojs/tailwind";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
integrations: [tailwind()]
|
||||
});
|
26
apps/web/package.json
Normal file
26
apps/web/package.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "@lume/web",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
"build": "astro check && astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.4.1",
|
||||
"@astrojs/tailwind": "^5.1.0",
|
||||
"@fontsource/geist-mono": "^5.0.1",
|
||||
"astro": "^4.2.1",
|
||||
"astro-seo-meta": "^4.1.0",
|
||||
"astro-seo-schema": "^4.0.0",
|
||||
"schema-dts": "^1.1.2",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/typography": "^0.5.10"
|
||||
}
|
||||
}
|
37
apps/web/public/favicon.svg
Normal file
37
apps/web/public/favicon.svg
Normal file
@ -0,0 +1,37 @@
|
||||
<svg width="824" height="824" viewBox="0 0 824 824" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_564_71)">
|
||||
<rect width="824" height="824" rx="184" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||
<circle cx="267" cy="594" r="42" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||
<circle cx="267" cy="594" r="42" fill="url(#paint0_radial_564_71)" fill-opacity="0.5" style=""/>
|
||||
<circle cx="267" cy="594" r="42" fill="url(#paint1_radial_564_71)" fill-opacity="0.3" style=""/>
|
||||
<circle cx="557" cy="594" r="42" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||
<circle cx="557" cy="594" r="42" fill="url(#paint2_radial_564_71)" fill-opacity="0.5" style=""/>
|
||||
<circle cx="557" cy="594" r="42" fill="url(#paint3_radial_564_71)" fill-opacity="0.3" style=""/>
|
||||
<path d="M412 691C382.859 691 353.717 686.063 337.654 682.804C333.024 681.865 329.866 686.676 333.074 690.144C345.098 703.138 370.814 724 412 724C453.186 724 478.902 703.138 490.926 690.144C494.134 686.676 490.976 681.865 486.346 682.804C470.283 686.063 441.141 691 412 691Z" fill="url(#paint4_linear_564_71)" style=""/>
|
||||
</g>
|
||||
<defs>
|
||||
<radialGradient id="paint0_radial_564_71" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(241.807 578.038) rotate(112.103) scale(88.2816 69.6512)">
|
||||
<stop stop-color="white" style="stop-color:white;stop-opacity:1;"/>
|
||||
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint1_radial_564_71" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(288.309 621.165) rotate(126.504) scale(25.5816 15.4047)">
|
||||
<stop stop-color="white" style="stop-color:white;stop-opacity:1;"/>
|
||||
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint2_radial_564_71" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(531.807 578.038) rotate(112.103) scale(88.2816 69.6512)">
|
||||
<stop stop-color="white" style="stop-color:white;stop-opacity:1;"/>
|
||||
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint3_radial_564_71" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(578.309 621.165) rotate(126.504) scale(25.5816 15.4047)">
|
||||
<stop stop-color="white" style="stop-color:white;stop-opacity:1;"/>
|
||||
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="paint4_linear_564_71" x1="293.565" y1="686.595" x2="316.497" y2="774.784" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF9F5A" style="stop-color:#FF9F5A;stop-color:color(display-p3 1.0000 0.6235 0.3529);stop-opacity:1;"/>
|
||||
<stop offset="1" stop-color="#FF9F5A" style="stop-color:#FF9F5A;stop-color:color(display-p3 1.0000 0.6235 0.3529);stop-opacity:1;"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_564_71">
|
||||
<rect width="824" height="824" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
BIN
apps/web/public/og-image.jpg
Normal file
BIN
apps/web/public/og-image.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
1
apps/web/src/env.d.ts
vendored
Normal file
1
apps/web/src/env.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
/// <reference types="astro/client" />
|
149
apps/web/src/pages/index.astro
Normal file
149
apps/web/src/pages/index.astro
Normal file
@ -0,0 +1,149 @@
|
||||
---
|
||||
import { Seo } from "astro-seo-meta";
|
||||
---
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>Lume</title>
|
||||
<Seo
|
||||
title="Lume"
|
||||
description="A multiple columns Nostr client for desktop."
|
||||
keywords={[
|
||||
"nostr",
|
||||
"nostr client",
|
||||
"social network",
|
||||
"desktop app",
|
||||
"timeline",
|
||||
"application",
|
||||
"columns",
|
||||
]}
|
||||
themeColor="#fafafa"
|
||||
colorScheme="light"
|
||||
facebook={{
|
||||
image: "/og-image.jpg",
|
||||
url: "https://lume.nu",
|
||||
type: "website",
|
||||
}}
|
||||
twitter={{
|
||||
image: "/og-image.jpg",
|
||||
card: "summary",
|
||||
}}
|
||||
/>
|
||||
</head>
|
||||
<body
|
||||
class="w-full h-full antialiased font-mono bg-neutral-50 dark:bg-neutral-950 text-neutral-950 dark:text-neutral-50"
|
||||
>
|
||||
<div class="max-w-2xl mx-auto w-full py-16">
|
||||
<div class="flex flex-col gap-16">
|
||||
<div class="prose dark:prose-invert prose-neutral max-w-none">
|
||||
<h3>About Lume</h3>
|
||||
<p>
|
||||
Lume is a <b>Nostr client</b> for desktop include Linux, Windows and
|
||||
macOS. It is free and open source, you can look at source code <a
|
||||
href="https://github.com/luminous-devs/lume"
|
||||
target="_blank">on Github</a
|
||||
>. Lume is actively improving the app and adding new features, you
|
||||
can expect new update every month.
|
||||
</p>
|
||||
<a href="#download">Download</a>
|
||||
<h3>What is nostr & how does it work?</h3>
|
||||
<p>
|
||||
Nostr stands for Notes and Other Stuff Transmitted by Relays. It is
|
||||
an open, permission-less protocol that aims to provide
|
||||
censorship-resistance and interoperability. It can be used to create
|
||||
social networks or just about any other type of app (other stuff
|
||||
part of the acronym). It is not a single website or app, but the
|
||||
glue that holds together many apps (clients) and <b>Lume</b> is one of
|
||||
it.
|
||||
</p>
|
||||
<p>
|
||||
At its core, nostr consists of relays and events. A person does
|
||||
something (event) and this event is sent to a relay. The relay
|
||||
stores the event, then waits for another person to request it. The
|
||||
most common types of events are notes and reactions - the stuff
|
||||
social media is made of, but there are many other types of events.
|
||||
It works very similar to how any other app would work with a
|
||||
database, except in nostr there is no single database, rather a
|
||||
large number of relays that store the events.
|
||||
</p>
|
||||
<h3>Lume is multiple columns experience</h3>
|
||||
<p>
|
||||
Lume is display your timeline as multiple column, each column is
|
||||
each different content and you can define your experience
|
||||
</p>
|
||||
<p>
|
||||
You can create a column to display newsfeed from specific people,
|
||||
you can create a column to display all contents related to some
|
||||
hashtags. It all up to you.
|
||||
</p>
|
||||
<img
|
||||
src="https://image.nostr.build/fd3e3cdeb4fb9f0f3de5c5e668a11dcae55f50cc9a78fc2b57b063240191a0f9.png"
|
||||
alt="columns"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
class="w-full h-auto rounded-lg"
|
||||
/>
|
||||
<h3>"For You"</h3>
|
||||
<p>
|
||||
Unlike some social networks, they feed you by algorithm. In Lume,
|
||||
you totally control what to will see
|
||||
</p>
|
||||
<img
|
||||
src="https://image.nostr.build/5afd79de15929a4ac6f6e933791c942555baa4206fecee54fed61dde9fe167e1.png"
|
||||
alt="for you"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
class="w-full h-auto rounded-lg"
|
||||
/>
|
||||
<h3 id="download">Download and Explore</h3>
|
||||
<p>
|
||||
(Universal) macOS: <a
|
||||
href="https://github.com/luminous-devs/lume/releases/download/v3.0.0/Lume.3_3.0.0_universal.dmg"
|
||||
>Lume.3_3.0.0_universal.dmg
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
(x86-64) Windows 11: <a
|
||||
href="https://github.com/luminous-devs/lume/releases/download/v3.0.0/Lume.3_3.0.0_x64-setup.exe"
|
||||
>Lume.3_3.0.0_x64-setup.exe</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
(x86-64) Ubuntu: <a
|
||||
href="https://github.com/luminous-devs/lume/releases/download/v3.0.0/lume-3_3.0.0_amd64.deb"
|
||||
>lume-3_3.0.0_amd64.deb</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
(x86-64) Fedora: <a
|
||||
href="https://github.com/luminous-devs/lume/releases/download/v3.0.0/lume-3-3.0.0-1.x86_64.rpm"
|
||||
>lume-3-3.0.0-1.x86_64.rpm</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
(x86-64) Other Linux: <a
|
||||
href="https://github.com/luminous-devs/lume/releases/download/v3.0.0/lume-3_3.0.0_amd64.AppImage"
|
||||
>lume-3_3.0.0_amd64.AppImage</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
Support for ARM, RISC-V and Loongarch architecture are coming soon.
|
||||
</p>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-600">
|
||||
Supported by <a
|
||||
href="https://opensats.org"
|
||||
target="_blank"
|
||||
class="text-orange-500">Open Sats</a
|
||||
> and Community
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
15
apps/web/tailwind.config.mjs
Normal file
15
apps/web/tailwind.config.mjs
Normal file
@ -0,0 +1,15 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
|
||||
const defaultTheme = require("tailwindcss/defaultTheme");
|
||||
|
||||
export default {
|
||||
content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
mono: ["Geist Mono", ...defaultTheme.fontFamily.mono],
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [require("@tailwindcss/typography")],
|
||||
};
|
3
apps/web/tsconfig.json
Normal file
3
apps/web/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "astro/tsconfigs/strict"
|
||||
}
|
2717
pnpm-lock.yaml
2717
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user