Compare commits
5
Commits
dev
...
a6f094614e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6f094614e | ||
|
|
1150c230b6 | ||
|
|
01c7c97ec3 | ||
|
|
a362e2c070 | ||
|
|
43ef515a3b |
No files matched your search
@@ -4,6 +4,7 @@
|
||||
# Python virtual environment
|
||||
/.venv/
|
||||
.agents/
|
||||
.claude/
|
||||
|
||||
# Binary zip archives
|
||||
*.zip
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ This module implements the standalone backend REST API server, SQLite database s
|
||||
```
|
||||
+-------------------------------------------------------------+
|
||||
| SQLite (anl.db) |
|
||||
| 11 Relational Tables (Projects, Members, Pubs, Lectures) |
|
||||
| 11 Relational Tables (fProjects, Members, Pubs, Lectures) |
|
||||
+-------------------------------------------------------------+
|
||||
▲ ▲
|
||||
│ (cmd/seed) │ (SQL query)
|
||||
|
||||
+7
-5
@@ -8,6 +8,7 @@ services:
|
||||
args:
|
||||
- NEXT_PUBLIC_API_BASE_URL=${NEXT_PUBLIC_API_BASE_URL:-}
|
||||
container_name: anl-app
|
||||
user: "${UID:-1000}:${GID:-1000}"
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${APP_PORT:-8080}:8080"
|
||||
@@ -20,14 +21,15 @@ services:
|
||||
- AUTO_MIGRATE=true
|
||||
- ADMIN_TOKEN=${ADMIN_TOKEN:?ADMIN_TOKEN must be set -- see .env.example}
|
||||
volumes:
|
||||
- anl-db-data:/app/data
|
||||
- ./volumes/data:/app/data
|
||||
# - anl-db-data:/app/data
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health"]
|
||||
test: [ "CMD", "curl", "-f", "http://localhost:8080/api/v1/health" ]
|
||||
interval: 15s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
|
||||
volumes:
|
||||
anl-db-data:
|
||||
name: anl-sqlite-storage
|
||||
# volumes:
|
||||
# anl-db-data:
|
||||
# name: anl-sqlite-storage
|
||||
@@ -74,15 +74,6 @@ export default function MembersPage() {
|
||||
>
|
||||
sjkoh@knu.ac.kr
|
||||
</a>
|
||||
<span className="text-ink-mute">|</span>
|
||||
<a
|
||||
href="https://github.com/sjkoh12"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-ink hover:text-cobalt-dark hover:underline"
|
||||
>
|
||||
GitHub Profile ↗
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div className="lg:col-span-4 flex justify-center items-center">
|
||||
|
||||
@@ -134,7 +134,7 @@ export default function Header() {
|
||||
{/* Brand logo */}
|
||||
<Link
|
||||
href="/"
|
||||
className="group flex items-center gap-3 min-w-0 desktop:shrink-0"
|
||||
className="group flex items-center gap-3 min-w-0 nav:shrink-0"
|
||||
onClick={() => setOpen(false)}
|
||||
>
|
||||
<div className="relative flex items-center justify-center w-9 h-9 sm:w-10 sm:h-10 rounded-xl overflow-hidden shadow-sm border border-line group-hover:border-cobalt/40 group-hover:shadow-md group-hover:scale-105 transition-all duration-300 shrink-0">
|
||||
@@ -162,18 +162,16 @@ export default function Header() {
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col leading-none min-w-0">
|
||||
<span className="headline-ko text-lg text-ink sm:text-xl font-bold tracking-tight group-hover:text-cobalt-dark transition-colors">
|
||||
ANL
|
||||
</span>
|
||||
<span className="kicker mt-1 transition-colors group-hover:text-cobalt-dark truncate">
|
||||
AI Agent Networking LAB
|
||||
</span>
|
||||
{/* Stacked wordmark — the cobalt initials spell out ANL */}
|
||||
<div className="font-sans flex flex-col min-w-0 text-[0.8rem] sm:text-[0.875rem] font-semibold leading-[1.15] tracking-tight text-ink transition-colors group-hover:text-cobalt-dark">
|
||||
<span className="whitespace-nowrap"><span className="text-cobalt">A</span>I Agent</span>
|
||||
<span className="whitespace-nowrap"><span className="text-cobalt">N</span>etworking</span>
|
||||
<span className="whitespace-nowrap"><span className="text-cobalt">L</span>aboratory</span>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* Desktop nav — small caps, wide tracking (visible at >= 1240px) */}
|
||||
<div className="hidden items-center gap-4 desktop:flex">
|
||||
{/* Desktop nav — small caps, wide tracking (visible at >= 1000px; compact spacing below 1240px) */}
|
||||
<div className="hidden items-center gap-3 nav:flex desktop:gap-4">
|
||||
<nav className="flex items-center gap-2" aria-label="Main Navigation">
|
||||
{navItems.map((item) => {
|
||||
const active = isActive(item.href);
|
||||
@@ -182,7 +180,7 @@ export default function Header() {
|
||||
key={item.href}
|
||||
href={item.href}
|
||||
aria-current={active ? "page" : undefined}
|
||||
className={`group relative flex items-baseline gap-1.5 text-[0.78rem] font-semibold uppercase tracking-[0.18em] transition-all px-3 py-1.5 rounded-md ${
|
||||
className={`group relative flex items-baseline gap-1.5 text-[0.78rem] font-semibold uppercase tracking-[0.1em] desktop:tracking-[0.18em] transition-all px-2 desktop:px-3 py-1.5 rounded-md ${
|
||||
active
|
||||
? "bg-cobalt-dark text-white dark:text-ivory shadow-sm font-bold"
|
||||
: "text-ink hover:text-cobalt-dark hover:bg-paper/60"
|
||||
@@ -204,8 +202,8 @@ export default function Header() {
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
|
||||
{/* Mobile controls (visible under 1240px) */}
|
||||
<div className="flex items-center gap-2 desktop:hidden">
|
||||
{/* Mobile controls (visible under 1000px) */}
|
||||
<div className="flex items-center gap-2 nav:hidden">
|
||||
<ThemeToggle />
|
||||
<button
|
||||
type="button"
|
||||
@@ -230,7 +228,7 @@ export default function Header() {
|
||||
{open && (
|
||||
<nav
|
||||
id="mobile-menu"
|
||||
className="mobile-menu-panel border-t border-ink bg-ivory desktop:hidden"
|
||||
className="mobile-menu-panel border-t border-ink bg-ivory nav:hidden"
|
||||
aria-label="Mobile Navigation"
|
||||
>
|
||||
<ul className="container-content flex flex-col py-2">
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 389 KiB |
File renamed without changes.
Binary file not shown.
|
Before Width: | Height: | Size: 301 KiB |
@@ -29,6 +29,8 @@ const config: Config = {
|
||||
theme: {
|
||||
extend: {
|
||||
screens: {
|
||||
// Header swaps the mobile menu for the inline nav (compact spacing until `desktop`).
|
||||
nav: "1000px",
|
||||
desktop: "1240px",
|
||||
},
|
||||
colors: {
|
||||
|
||||
Reference in new issue
Block a user