A web-based, single-page application (SPA) for creating, editing, and playing Nonogram (Picross/Griddlers) puzzles.
For detailed information about the application, please refer to the following documentation:
This project is divided into two main parts:
Navigate to the backend directory:
cd backend
Create a virtual environment:
python -m venv .venv
Activate the virtual environment:
.venv\Scripts\activate
source .venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Navigate to the frontend directory:
cd frontend
Install dependencies:
npm install
From the backend directory with the virtual environment activated:
uvicorn main:app --reload
The API will be available at http://localhost:8000
From the frontend directory:
npm run dev
The application will be available at http://localhost:5173
nonogram-editor/
├── backend/
│ ├── app/
│ │ ├── api/
│ │ │ └── nonograms.py # API endpoints
│ │ ├── core/
│ │ │ ├── models.py # Pydantic data models
│ │ │ └── crud.py # Data operations
│ │ └── data/
│ │ └── nonogram-games.json # Sample nonogram data
│ ├── main.py # FastAPI application
│ └── requirements.txt # Python dependencies
├── frontend/
│ ├── src/
│ │ ├── lib/
│ │ │ ├── components/ # Svelte components
│ │ │ ├── stores/ # Svelte stores for state management
│ │ │ └── api/ # API client
│ │ └── routes/ # SvelteKit routes
│ ├── package.json # Node.js dependencies
│ └── svelte.config.js # Svelte configuration
├── docs/
│ ├── ARCHITECTURE.md # Application architecture documentation
│ ├── DEPLOYMENT.md # Deployment guide
│ └── USER_GUIDE.md # User manual
└── README.md # This file
If you encounter npm dependency errors when installing the frontend packages, use the --legacy-peer-deps
flag:
cd frontend
npm install --legacy-peer-deps
This is necessary due to some version conflicts between SvelteKit and its plugins. Using this flag allows npm to bypass the peer dependency check and install the packages anyway.
Alternatively, you can use the -f
or --force
flag, but this is less recommended:
cd frontend
npm install --force
Some unit tests may fail due to TypeScript configuration issues. We're working on resolving these issues in future updates. These failures don't affect the functionality of the application.