This commit is contained in:
parent
319838f7b3
commit
5df7656559
|
@ -1,6 +1,6 @@
|
||||||
module.exports = (require) => {
|
module.exports = (require) => {
|
||||||
const killTheNewsletter = require(".").default;
|
const killTheNewsletter = require(".").default;
|
||||||
const { webApplication, emailApplication } = killTheNewsletter();
|
const { webApplication, emailApplication } = killTheNewsletter(__dirname);
|
||||||
|
|
||||||
webApplication.listen(new URL(webApplication.get("url")).port, () => {
|
webApplication.listen(new URL(webApplication.get("url")).port, () => {
|
||||||
console.log(`Web server started at ${webApplication.get("url")}`);
|
console.log(`Web server started at ${webApplication.get("url")}`);
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
viewBox="0 0 46.574733 14.012067"
|
viewBox="0 0 46.574733 14.012067"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg8"
|
id="svg8"
|
||||||
inkscape:version="1.0 (4035a4f, 2020-05-01)"
|
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
|
||||||
sodipodi:docname="logo.svg">
|
sodipodi:docname="logo.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs2" />
|
id="defs2" />
|
||||||
|
@ -32,10 +32,10 @@
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
showguides="true"
|
showguides="true"
|
||||||
inkscape:guide-bbox="true"
|
inkscape:guide-bbox="true"
|
||||||
inkscape:window-width="1440"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="855"
|
inkscape:window-height="1027"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="23"
|
inkscape:window-y="25"
|
||||||
inkscape:window-maximized="0" />
|
inkscape:window-maximized="0" />
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata5">
|
id="metadata5">
|
||||||
|
@ -74,14 +74,9 @@
|
||||||
d="m 155.09386,116.25295 h 3.11645 l -3e-5,1.52841 c 0,0.13237 0.0686,0.25541 0.18123,0.32503 0.11264,0.0697 0.25331,0.076 0.37175,0.0167 l 6.11361,-3.05679 c 0.12946,-0.0647 0.21121,-0.19707 0.21123,-0.34176 -1e-5,-0.14475 -0.0818,-0.27706 -0.21123,-0.34176 l -6.11363,-3.05682 c -0.11847,-0.0592 -0.25912,-0.0529 -0.37176,0.0167 -0.11269,0.0695 -0.18126,0.19257 -0.18122,0.32503 l -2e-5,1.52841 -3.11642,2e-5 c -0.1055,0 -0.20105,0.0428 -0.27019,0.1119 -0.0691,0.0692 -0.11192,0.16467 -0.11188,0.27017 l -1e-5,2.29262 c 0,0.21104 0.17106,0.38211 0.38211,0.38209 z m 0.3821,-2.29261 3.11642,-1e-5 c 0.21101,1e-5 0.38211,-0.17109 0.3821,-0.3821 v -1.29225 l 4.87712,2.43856 -4.87712,2.43855 v -1.29224 c 2e-5,-0.21083 -0.17108,-0.38212 -0.3821,-0.3821 h -3.11643 z"
|
d="m 155.09386,116.25295 h 3.11645 l -3e-5,1.52841 c 0,0.13237 0.0686,0.25541 0.18123,0.32503 0.11264,0.0697 0.25331,0.076 0.37175,0.0167 l 6.11361,-3.05679 c 0.12946,-0.0647 0.21121,-0.19707 0.21123,-0.34176 -1e-5,-0.14475 -0.0818,-0.27706 -0.21123,-0.34176 l -6.11363,-3.05682 c -0.11847,-0.0592 -0.25912,-0.0529 -0.37176,0.0167 -0.11269,0.0695 -0.18126,0.19257 -0.18122,0.32503 l -2e-5,1.52841 -3.11642,2e-5 c -0.1055,0 -0.20105,0.0428 -0.27019,0.1119 -0.0691,0.0692 -0.11192,0.16467 -0.11188,0.27017 l -1e-5,2.29262 c 0,0.21104 0.17106,0.38211 0.38211,0.38209 z m 0.3821,-2.29261 3.11642,-1e-5 c 0.21101,1e-5 0.38211,-0.17109 0.3821,-0.3821 v -1.29225 l 4.87712,2.43856 -4.87712,2.43855 v -1.29224 c 2e-5,-0.21083 -0.17108,-0.38212 -0.3821,-0.3821 h -3.11643 z"
|
||||||
id="path1447"
|
id="path1447"
|
||||||
style="stroke-width:0.264583" />
|
style="stroke-width:0.264583" />
|
||||||
<rect
|
<path
|
||||||
style="fill:none;stroke:#000000;stroke-width:1.11125;stroke-miterlimit:4;stroke-dasharray:none;stop-color:#000000"
|
|
||||||
id="rect35"
|
id="rect35"
|
||||||
width="12.900817"
|
style="fill:none;stroke:#000000;stroke-width:1.11125;stroke-miterlimit:4;stroke-dasharray:none;stop-color:#000000"
|
||||||
height="12.900817"
|
d="m 168.604,107.67662 h 10.25498 c 0.7329,0 1.32292,0.59002 1.32292,1.32292 v 10.25498 c 0,0.7329 -0.59002,1.32292 -1.32292,1.32292 H 168.604 c -0.7329,0 -1.32292,-0.59002 -1.32292,-1.32292 v -10.25498 c 0,-0.7329 0.59002,-1.32292 1.32292,-1.32292 z" />
|
||||||
x="167.28108"
|
|
||||||
y="107.67662"
|
|
||||||
rx="1.3229166"
|
|
||||||
ry="1.3229166" />
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.3 KiB |
34
src/index.ts
34
src/index.ts
|
@ -7,6 +7,8 @@ import fs from "fs-extra";
|
||||||
import cryptoRandomString from "crypto-random-string";
|
import cryptoRandomString from "crypto-random-string";
|
||||||
import { html, HTML } from "@leafac/html";
|
import { html, HTML } from "@leafac/html";
|
||||||
import { css, process as processCSS } from "@leafac/css";
|
import { css, process as processCSS } from "@leafac/css";
|
||||||
|
import { sql, Database } from "@leafac/sqlite";
|
||||||
|
import databaseMigrate from "@leafac/sqlite-migration";
|
||||||
|
|
||||||
const VERSION = require("../package.json").version;
|
const VERSION = require("../package.json").version;
|
||||||
|
|
||||||
|
@ -20,6 +22,31 @@ export default function killTheNewsletter(
|
||||||
webApplication.set("email host", "localhost");
|
webApplication.set("email host", "localhost");
|
||||||
webApplication.set("administrator", "mailto:kill-the-newsletter@leafac.com");
|
webApplication.set("administrator", "mailto:kill-the-newsletter@leafac.com");
|
||||||
|
|
||||||
|
const database = new Database(
|
||||||
|
path.join(rootDirectory, "kill-the-newsletter.db")
|
||||||
|
);
|
||||||
|
databaseMigrate(database, [
|
||||||
|
sql`
|
||||||
|
CREATE TABLE "feeds" (
|
||||||
|
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"createdAt" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updatedAt" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"reference" TEXT NOT NULL UNIQUE,
|
||||||
|
"title" TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE "entries" (
|
||||||
|
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"createdAt" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"reference" TEXT NOT NULL UNIQUE,
|
||||||
|
"feed" INTEGER NOT NULL REFERENCES "feeds",
|
||||||
|
"title" TEXT NOT NULL,
|
||||||
|
"author" TEXT NOT NULL,
|
||||||
|
"content" TEXT NOT NULL
|
||||||
|
);
|
||||||
|
`,
|
||||||
|
]);
|
||||||
|
|
||||||
webApplication.use(express.static(path.join(__dirname, "../public")));
|
webApplication.use(express.static(path.join(__dirname, "../public")));
|
||||||
webApplication.use(express.urlencoded({ extended: true }));
|
webApplication.use(express.urlencoded({ extended: true }));
|
||||||
|
|
||||||
|
@ -153,10 +180,6 @@ export default function killTheNewsletter(
|
||||||
path {
|
path {
|
||||||
fill: #ffffffd4;
|
fill: #ffffffd4;
|
||||||
}
|
}
|
||||||
|
|
||||||
rect {
|
|
||||||
stroke: #ffffffd4;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
`}"
|
`}"
|
||||||
>
|
>
|
||||||
|
@ -189,7 +212,7 @@ export default function killTheNewsletter(
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="name"
|
name="name"
|
||||||
placeholder="Newsletter Name…"
|
placeholder="Newsletter name…"
|
||||||
maxlength="500"
|
maxlength="500"
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
|
@ -222,7 +245,6 @@ export const webServer = express()
|
||||||
res.header("X-Robots-Tag", "noindex");
|
res.header("X-Robots-Tag", "noindex");
|
||||||
next();
|
next();
|
||||||
})
|
})
|
||||||
.get("/", (req, res) => res.send(layout(newInbox())))
|
|
||||||
.post("/", async (req, res, next) => {
|
.post("/", async (req, res, next) => {
|
||||||
try {
|
try {
|
||||||
const { name } = req.body;
|
const { name } = req.body;
|
||||||
|
|
Loading…
Reference in New Issue