https://github.com/iomz/gyre-clone
A clone of GYRE "World Reflector"
https://github.com/iomz/gyre-clone
archimedean-spiral nextjs vercel webspeech-api
Last synced: 5 months ago
JSON representation
A clone of GYRE "World Reflector"
- Host: GitHub
- URL: https://github.com/iomz/gyre-clone
- Owner: iomz
- License: cc0-1.0
- Created: 2025-10-07T01:35:38.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-11-16T02:50:15.000Z (7 months ago)
- Last Synced: 2025-11-16T04:29:06.909Z (7 months ago)
- Topics: archimedean-spiral, nextjs, vercel, webspeech-api
- Language: TypeScript
- Homepage: https://gyre-clone.vercel.app
- Size: 279 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# GYRE Clone
[](https://github.com/iomz/gyre-clone/actions?query=workflow%3Adocker)
More than a decade ago, [a shopping complex located at Omotesando, Tokyo](https://gyre-omotesando.com/) had an inspiring website displaying swirling words flowing into vortex.
I was just so keen to recreate the same or at least similar concept design to gain that nearly meditating feeling of watching the gyre.
The original work was produced by THA LTD, as "[GYRE WORLD REFLECTOR](https://tha.jp/45)."
_All the credits go to them_ – I just merely enjoy the visual and the sound by myself.
The text is generated by ChatGPT and stored in MongoDB. The app fetches the text based on the selected language and the topic. The text is then spoken using Web Speech API.
The recommended platform is Chrome on macOS, at the moment. Topics and languages can be easily extended by registering new entries to the DB.
See the running example at https://gyre-clone.vercel.app
## Synopsis
If you are not using Vercel and want to self-host the app:
1. Rename the `.env.local.example` to `.env.local`, which contains a MongoDB URL to access the docker service.
```console
mv .env.local.example .env.local
```
2. Download a preset data (`messages.json`) inside `/data` directory to seed the database.
```console
mkdir data && curl -o data/messages.json https://gyre-clone.vercel.app/api/message/export
```
3. Build the docker image.
```console
docker compose build
```
4. Run the services; the app is up and running at localhost:9763
```console
docker compose up -d
```
## Extend the topics and the languages
1. Create a new text file contains _a paragraph per line_. The file name should be `_.txt` (e.g., `food_en-GB.txt`).
2. Run the `scripts/post.js` with your `endpoint` and `dir` that contains the text file(s). In the example below, the text file is placed under `data` directory.
```console
node scripts/post.js http://localhost:9763/api/message data
```