feat: expand to 1014 words, add title-case display and 2 new themes
- Move word data from hardcoded seed.py to data/words.json - Expand from 210 words across 7 categories to 1014 words across 14 categories (animals, food, colors, sports, space, nature, music, science, countries, occupations, ocean, weather, mythology, technology) - Word list sidebar now shows title case (Tiger) while grid stays uppercase; text input remains case-insensitive - Add Ocean theme (light, blue accents) and Forest theme (dark, amber accents on deep green) - Replace hardcoded rgba values with --coral-bg CSS variable so selection highlighting adapts per theme Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
cd1dc9200b
commit
9319f08875
@@ -1,227 +1,17 @@
|
||||
"""Seed the database with word categories from data/words.json."""
|
||||
|
||||
import json
|
||||
import os
|
||||
|
||||
from db import get_engine, get_session_factory, init_db
|
||||
from models.category import Category, CategoryWord
|
||||
|
||||
SEED_DATA = {
|
||||
"animals": [
|
||||
"TIGER",
|
||||
"DOLPHIN",
|
||||
"EAGLE",
|
||||
"WOLF",
|
||||
"BEAR",
|
||||
"LION",
|
||||
"HAWK",
|
||||
"DEER",
|
||||
"FROG",
|
||||
"SHARK",
|
||||
"SNAKE",
|
||||
"WHALE",
|
||||
"ZEBRA",
|
||||
"PANDA",
|
||||
"OTTER",
|
||||
"FALCON",
|
||||
"BISON",
|
||||
"CRANE",
|
||||
"MOOSE",
|
||||
"RAVEN",
|
||||
"JAGUAR",
|
||||
"PARROT",
|
||||
"TURTLE",
|
||||
"SALMON",
|
||||
"FERRET",
|
||||
"COYOTE",
|
||||
"OSPREY",
|
||||
"LIZARD",
|
||||
"BADGER",
|
||||
"PELICAN",
|
||||
"MONKEY",
|
||||
"RABBIT",
|
||||
"IGUANA",
|
||||
"CONDOR",
|
||||
"JACKAL",
|
||||
],
|
||||
"colors": [
|
||||
"CRIMSON",
|
||||
"VIOLET",
|
||||
"AMBER",
|
||||
"SCARLET",
|
||||
"INDIGO",
|
||||
"MAROON",
|
||||
"CORAL",
|
||||
"IVORY",
|
||||
"SILVER",
|
||||
"GOLDEN",
|
||||
"BRONZE",
|
||||
"TEAL",
|
||||
"OLIVE",
|
||||
"PLUM",
|
||||
"RUST",
|
||||
"SAGE",
|
||||
"NAVY",
|
||||
"JADE",
|
||||
"CYAN",
|
||||
"MAUVE",
|
||||
"COBALT",
|
||||
"COPPER",
|
||||
"EBONY",
|
||||
"PEACH",
|
||||
"CREAM",
|
||||
"LEMON",
|
||||
"ORCHID",
|
||||
"SALMON",
|
||||
"SIENNA",
|
||||
"KHAKI",
|
||||
"LILAC",
|
||||
"PEARL",
|
||||
"CHARCOAL",
|
||||
"MAGENTA",
|
||||
"EMERALD",
|
||||
],
|
||||
"food": [
|
||||
"PIZZA",
|
||||
"SUSHI",
|
||||
"MANGO",
|
||||
"PASTA",
|
||||
"TACO",
|
||||
"BREAD",
|
||||
"STEAK",
|
||||
"GRAPE",
|
||||
"MELON",
|
||||
"PEACH",
|
||||
"OLIVE",
|
||||
"LEMON",
|
||||
"BACON",
|
||||
"WAFFLE",
|
||||
"CREPE",
|
||||
"DONUT",
|
||||
"SALAD",
|
||||
"CURRY",
|
||||
"BAGEL",
|
||||
"FUDGE",
|
||||
"SHRIMP",
|
||||
"CHEESE",
|
||||
"BUTTER",
|
||||
"CHERRY",
|
||||
"PEPPER",
|
||||
"GINGER",
|
||||
"PRETZEL",
|
||||
"BRISKET",
|
||||
"NOODLE",
|
||||
"OYSTER",
|
||||
"TURNIP",
|
||||
"RADISH",
|
||||
"CELERY",
|
||||
"COOKIE",
|
||||
"BISQUE",
|
||||
],
|
||||
"sports": [
|
||||
"SOCCER",
|
||||
"TENNIS",
|
||||
"BOXING",
|
||||
"RUGBY",
|
||||
"GOLF",
|
||||
"DIVING",
|
||||
"ROWING",
|
||||
"HOCKEY",
|
||||
"FENCING",
|
||||
"ARCHER",
|
||||
"SPRINT",
|
||||
"DISCUS",
|
||||
"SQUASH",
|
||||
"KARATE",
|
||||
"JUDO",
|
||||
"RELAY",
|
||||
"SLALOM",
|
||||
"CRAWL",
|
||||
"VAULT",
|
||||
"SERVE",
|
||||
"VOLLEY",
|
||||
"TACKLE",
|
||||
"PADDLE",
|
||||
"JAVELIN",
|
||||
"HURDLE",
|
||||
],
|
||||
"space": [
|
||||
"PLANET",
|
||||
"GALAXY",
|
||||
"NEBULA",
|
||||
"COMET",
|
||||
"ORBIT",
|
||||
"QUASAR",
|
||||
"PULSAR",
|
||||
"LUNAR",
|
||||
"SOLAR",
|
||||
"METEOR",
|
||||
"AURORA",
|
||||
"ECLIPSE",
|
||||
"ZENITH",
|
||||
"CRATER",
|
||||
"COSMOS",
|
||||
"PHOTON",
|
||||
"PLASMA",
|
||||
"ROCKET",
|
||||
"SATURN",
|
||||
"VENUS",
|
||||
"MARS",
|
||||
"PLUTO",
|
||||
"TITAN",
|
||||
"VORTEX",
|
||||
"FLARE",
|
||||
],
|
||||
"nature": [
|
||||
"RIVER",
|
||||
"OCEAN",
|
||||
"CANYON",
|
||||
"FOREST",
|
||||
"DESERT",
|
||||
"ISLAND",
|
||||
"GLACIER",
|
||||
"MEADOW",
|
||||
"VALLEY",
|
||||
"SUMMIT",
|
||||
"LAGOON",
|
||||
"TUNDRA",
|
||||
"MARSH",
|
||||
"CLIFF",
|
||||
"DELTA",
|
||||
"FJORD",
|
||||
"GROVE",
|
||||
"RIDGE",
|
||||
"CORAL",
|
||||
"BROOK",
|
||||
"DUNE",
|
||||
"GEYSER",
|
||||
"CAVERN",
|
||||
"RAPIDS",
|
||||
"SAVANNA",
|
||||
],
|
||||
"music": [
|
||||
"GUITAR",
|
||||
"PIANO",
|
||||
"DRUMS",
|
||||
"VIOLIN",
|
||||
"FLUTE",
|
||||
"CELLO",
|
||||
"BANJO",
|
||||
"ORGAN",
|
||||
"HARP",
|
||||
"TRUMPET",
|
||||
"RHYTHM",
|
||||
"MELODY",
|
||||
"CHORD",
|
||||
"TEMPO",
|
||||
"FORTE",
|
||||
"TREBLE",
|
||||
"OCTAVE",
|
||||
"SONATA",
|
||||
"BALLAD",
|
||||
"OPERA",
|
||||
"HYMN",
|
||||
"LYRIC",
|
||||
"CHORUS",
|
||||
"BRIDGE",
|
||||
"DUET",
|
||||
],
|
||||
}
|
||||
DATA_PATH = os.path.join(os.path.dirname(__file__), "data", "words.json")
|
||||
|
||||
|
||||
def load_words():
|
||||
with open(DATA_PATH) as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def seed():
|
||||
@@ -230,7 +20,9 @@ def seed():
|
||||
Session = get_session_factory(engine)
|
||||
session = Session()
|
||||
|
||||
for cat_name, words in SEED_DATA.items():
|
||||
word_data = load_words()
|
||||
|
||||
for cat_name, words in word_data.items():
|
||||
existing = session.query(Category).filter_by(name=cat_name).first()
|
||||
if existing:
|
||||
cat = existing
|
||||
|
||||
Reference in New Issue
Block a user