Zero-dependency Node server + plain HTML/JS frontend. - Library is a folder tree (Manga/Book/Chapter/pages), indexed in place; page roles (cover, double, extra, rotation) are file name tags - Accounts with per-user progress, reading settings, follows and new-chapter notifications (in-app + optional webhook) - Reader with Flow, Page and Book modes, pointer-anchored page zoom, tap zones, auto-hiding controls, chapter picker, page preloading - Multiple versions per chapter with community votes - Docker image and compose file - Demo library generator (tools/make-dummy.js) - Docs: architecture, library format, import, scraper guide
27 lines
1.0 KiB
HTML
27 lines
1.0 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
<title>Sign in · MangaParty</title>
|
|
<link rel="stylesheet" href="app.css">
|
|
<link rel="icon" href="icon.svg">
|
|
<link rel="manifest" href="manifest.webmanifest">
|
|
<meta name="theme-color" content="#121214">
|
|
<script src="common.js" defer></script>
|
|
<script src="login.js" defer></script>
|
|
</head>
|
|
<body>
|
|
<main class="login">
|
|
<h1>MangaParty</h1>
|
|
<form id="form" class="card">
|
|
<h2 id="heading">Sign in</h2>
|
|
<label class="field"><span>User name</span><input id="name" autocomplete="username" autocapitalize="none" required></label>
|
|
<label class="field"><span>Password</span><input id="password" type="password" autocomplete="current-password" required></label>
|
|
<p id="msg" class="error" hidden></p>
|
|
<div class="row"><button class="btn primary" id="submit">Sign in</button><a href="#" id="toggle" hidden>Create an account</a></div>
|
|
</form>
|
|
</main>
|
|
</body>
|
|
</html>
|