add tag colors to seed data and reverse tag order in project cards

- Add color parameter to seed tags (Rust red, Python blue, etc.)
- Reverse tag display order in ProjectCard (flex-row-reverse)
- Enable release binary stripping in Cargo.toml
- Increase Railway health check timeout to 120s
- Remove backup favicon/icon files
This commit is contained in:
2026-01-13 21:07:51 -06:00
parent 34f610cdd9
commit 019cbe76f8
10 changed files with 46 additions and 28 deletions
+32 -16
View File
@@ -90,32 +90,48 @@ pub async fn run(pool: &PgPool) -> Result<(), Box<dyn std::error::Error>> {
// Seed tags
let tags = vec![
("rust", "Rust", "simple-icons:rust"),
("python", "Python", "simple-icons:python"),
("typescript", "TypeScript", "simple-icons:typescript"),
("javascript", "JavaScript", "simple-icons:javascript"),
("web", "Web", "lucide:globe"),
("cli", "CLI", "lucide:terminal"),
("library", "Library", "lucide:package"),
("game", "Game", "lucide:gamepad-2"),
("data-structures", "Data Structures", "lucide:database"),
("algorithms", "Algorithms", "lucide:cpu"),
("multiplayer", "Multiplayer", "lucide:users"),
("config", "Config", "lucide:settings"),
("rust", "Rust", "simple-icons:rust", "CE422B"),
("python", "Python", "simple-icons:python", "3776AB"),
(
"typescript",
"TypeScript",
"simple-icons:typescript",
"3178C6",
),
(
"javascript",
"JavaScript",
"simple-icons:javascript",
"EAB308",
),
("web", "Web", "lucide:globe", "2563EB"),
("cli", "CLI", "lucide:terminal", "64748B"),
("library", "Library", "lucide:package", "8B5CF6"),
("game", "Game", "lucide:gamepad-2", "EC4899"),
(
"data-structures",
"Data Structures",
"lucide:database",
"10B981",
),
("algorithms", "Algorithms", "lucide:cpu", "F59E0B"),
("multiplayer", "Multiplayer", "lucide:users", "06B6D4"),
("config", "Config", "lucide:settings", "6366F1"),
];
let mut tag_ids = std::collections::HashMap::new();
for (slug, name, icon) in tags {
for (slug, name, icon, color) in tags {
let result = sqlx::query!(
r#"
INSERT INTO tags (slug, name, icon)
VALUES ($1, $2, $3)
INSERT INTO tags (slug, name, icon, color)
VALUES ($1, $2, $3, $4)
RETURNING id
"#,
slug,
name,
icon
icon,
color
)
.fetch_one(pool)
.await?;
+2 -1
View File
@@ -36,17 +36,18 @@ pub async fn create_pool(database_url: &str) -> Result<PgPool, sqlx::Error> {
return Ok(pool);
}
Err(e) => {
last_error = Some(e);
if attempt < max_attempts {
tracing::warn!(
attempt,
max_attempts,
delay_secs = delay.as_secs(),
error = %e,
"Database connection failed, retrying..."
);
sleep(delay).await;
delay = (delay * 2).min(max_delay);
}
last_error = Some(e);
}
}
}