feat(ui): Ghibli/Miyazaki reskin + Obsidian docs vault + project audit

UI: warm daylight design system (Tailwind v4 @theme palette, gh-* component
classes, watercolor grain, Zen Maru Gothic + Klee One fonts), animated SSR-safe
GhibliBackground (drifting clouds, meadow hills, soot sprites), and a full reskin
of navbar, connect button, dapp page, loan cards, settings modal, and readme.
Fixes the bg-white-on-dark loan-card inconsistency. Web3/business logic untouched.

Docs: converted docs/ into an Obsidian vault (frontmatter, [[wikilinks]],
callouts, Home MOC, folders Architecture/Operations/Audits) and added a
full-project audit note (Project Audit 2026-06). Redacted a real leaked Schedy
key value from the security audit example (rotate it at Schedy).

Also commits the previously-untracked server layer: app/api (cron + tasks routes)
and lib (redis, ssrf-guard, task-store).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-06-14 08:13:53 +04:00
parent cf76322008
commit 6ae581ab2e
25 changed files with 4245 additions and 369 deletions

View File

@@ -1,14 +1,29 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import { Zen_Maru_Gothic, Klee_One } from "next/font/google";
import "./globals.css";
import Navbar from "@/components/Navbar";
import GhibliBackground from "@/components/GhibliBackground";
import { Web3Provider } from "@/providers/Web3Provider";
const inter = Inter({ subsets: ['latin'] });
// Soft, rounded Japanese sans for body text…
const zen = Zen_Maru_Gothic({
subsets: ["latin"],
weight: ["400", "500", "700"],
variable: "--font-zen",
display: "swap",
});
// …and a handwritten storybook face for headings & brand.
const klee = Klee_One({
subsets: ["latin"],
weight: ["400", "600"],
variable: "--font-klee",
display: "swap",
});
export const metadata: Metadata = {
title: 'MortgageFi - Decentralized Mortgage Lending',
description: 'Secure, flexible, and innovative solutions for your digital assets',
title: "MortgageFi Decentralized Mortgage Lending",
description: "Secure, flexible, and gentle solutions for your digital assets",
};
export default function RootLayout({
@@ -17,17 +32,17 @@ export default function RootLayout({
children: React.ReactNode;
}) {
return (
<html lang="en">
<body className={`${inter.className} bg-gray-900 text-gray-100 min-h-screen`}>
<html lang="en" className={`${zen.variable} ${klee.variable}`}>
<body className="min-h-screen text-ink antialiased">
<GhibliBackground />
<Web3Provider>
<div className="min-h-screen flex flex-col">
<Navbar />
<main className="flex-1">
{children}
</main>
<footer className="bg-gray-900 border-t border-gray-800 py-6">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<p className="text-center text-gray-400 text-sm">
<main className="flex-1">{children}</main>
<footer className="mt-10 border-t border-line/60 py-6">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col items-center gap-1">
<span className="gh-eyebrow text-sm">🌿 made with care</span>
<p className="text-center text-ink-soft text-sm">
&copy; {new Date().getFullYear()} MortgageFi. All rights reserved.
</p>
</div>