A web-based daily word puzzle game in multiple languages.
This repository contains the frontend Angular code that powers stränge.games.polarnight.eu and strägar.games.polarnight.eu.
- Daily Puzzles: Engage with unique puzzles each day (see
src/app/strands/). - Interactive Calendar: Navigate and view past games (see
src/app/calendar/). - Changelog: Keep track of updates and new features (see
src/app/changelog/). - Game Progress & Results: Tracks your game progress and results locally (see
src/app/core/state/core.effects.ts). - Tutorial: Guides new users on how to play (see
src/app/tutorial/). - Progressive Web App (PWA): Installable on your device for an app-like experience, with offline capabilities (configured in
src/app/app.config.tsand./ngsw-config.json).
The riddles are stored as JSON files on a simple web server.
Generation of them is done by a combination of some microservices:
- redis or any other drop-in replacement for it – used as a message queue.
- straenge-concept-worker – Generates concepts (super solution, theme and word pool) with OpenAI requests for the actual generator and adds them to the queue. not required, concepts can be provided manually.
- straenge-riddle-worker – Generates riddles based on concepts from the queue. This part is pretty complex and computationally intensive, so it can take a while and can be parallelized by running multiple instances of this worker.
- straenge-results-worker – Stores results from the queue to JSON files.
- Frontend: Angular (v19)
- State Management: NgRx (see
src/app/app.config.ts) - Language: TypeScript
- Styling: CSS (see src/styles.css, src/fonts.css)
- Build Tool: Angular CLI
- Package Manager: pnpm (see pnpm-lock.yaml)
Before you begin to work on the project, ensure you have met the following requirements:
- You have installed Node.js (which includes npm).
- You have pnpm installed globally:
npm install -g pnpm(or your preferred installation method). - You have the Angular CLI installed globally:
pnpm install -g @angular/cli.
To get a local copy up and running, follow these simple steps.
-
Clone the repository (replace
polarfoxDevwith the actual path if you fork it):git clone https://github.com/polarfoxDev/strangui.git
-
Navigate to the project directory:
cd strangui -
Install dependencies:
pnpm install
This project was generated using Angular CLI version 19.0.6.
To start a local development server, run:
pnpm run start:dev:<lang>Once the server is running, open your browser and navigate to http://localhost:4200/. The application will automatically reload whenever you modify any of the source files.
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
ng generate component component-nameFor a complete list of available schematics (such as components, directives, or pipes), run:
ng generate --helpTo build the project run:
npm build:<env>:<lang>This will compile your project and store the build artifacts in the dist/ directory. By default, the production build optimizes your application for performance and speed.
To execute unit tests with the Karma test runner, use the following command:
ng testFor end-to-end (e2e) testing, run:
ng e2eAngular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
For more information on using the Angular CLI, including detailed command references, visit the Angular CLI Overview and Command Reference page.
Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue. Don't forget to give the project a star! Thanks!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.