A full-stack, ready-to-deploy template for solving the New York Times Letter Boxed puzzle. Built with FastAPI (backend) and plain HTML, CSS, and JavaScript (frontend). The app fetches daily puzzle data from a connected GitHub repository and computes 1-, 2-, or 3-word solutions on demand.
-
Two-Column Responsive Layout
- Left panel: Interactive 3-letter-per-side puzzle grid + solution controls + social links.
- Right panel: Dynamic solution display.
-
Dynamic Puzzle Fetching
/api/puzzle
endpoint pulls the latest puzzle JSON from GitHub.
-
On-Demand Solver
/api/solve?words={1|2|3}
returns valid word chains covering all 12 letters.
-
Loading & Error States during solution generation.
-
NYT-Inspired Styling with a clean serif font and minimal palette.
-
Render Deployment
- Configured for Render.com Free Hobby plan.
-
Developer-Friendly
if __name__ == "__main__"
block for local testing.
letter-boxed-solver/
├── assets/icons/ # Optional icon assets (site-favicon.png)
├── src/ # Python solver and scraper for letter-boxed puzzle
├── main.py # FastAPI application
├── requirements.txt # Python dependencies
├── static/ # Frontend assets
│ ├── style.css # CSS styles
│ └── script.js # JavaScript logic
├── index.html # Main HTML template
└── README.md # Project documentation
-
Clone the repository:
$ git clone https://github.com/code-archived/letter-boxed-solver.git $ cd letter-boxed-solver
-
Install dependencies:
pip install -r requirements.txt
-
Run locally:
uvicorn main:app
Open in http://localhost:8000 browser.
- Push your code to GitHub.
- Log in to Render.com and click New → Web Service.
- Connect your GitHub repo
letter-boxed-solver
. - Configure:
- Environment: Python 3
- Plan: Free (Hobby)
- Build Command:
pip install -r requirements.txt
- Start Command:
uvicorn main:app --host 0.0.0.0 --port $PORT
- (Optional) Add environment variables:
GITHUB_PUZZLE_URL
: URL to your raw puzzle JSON in GitHubGITHUB_TOKEN
: if fetching from a private repo
- Create Web Service and wait for deployment to finish.
- Puzzle Source: Update
get_puzzle()
inmain.py
to point to your GitHub raw URL. - Solver Logic: Replace the placeholder in
/api/solve
with your custom algorithm.