A relaxing, randomized vision-board slideshow for manifestation. Images from your folders rotate every 15 seconds with calm music, pause/next/shuffle controls, and fullscreen. Works offline as plain HTML, or online via a Python http.server or nginx for your phone and TV.
HTML
0
3 commits
updated Oct 6, 2026
A calm, endlessly shuffling vision-board slideshow for manifestation. Images from your folders rotate every 15 seconds with soft transitions and relaxing music. It works offline as plain HTML, or online so you can watch it on your phone or TV.
▶ Watch the 30-second demo with music (MP4)
The demo shows the start screen, images crossfading with a slow zoom, the category label in the top-left corner, the Next, Shuffle and Pause controls, and the controls fading away when the mouse stops moving. The music is Erik Satie's Gymnopédie No. 1, one of the bundled tracks.
Manifestation is the practice of focusing your attention on what you want in life: the home, the car, the places, the feelings. manifest-loop helps with that by keeping your goals in front of you. It quietly cycles through images of the things you want while calm music plays, so you spend a few minutes a day seeing the life you are working towards.
The idea is simple:
manifest-loop is a visualization and relaxation tool, nothing more. Manifestation has not been scientifically proven to make things happen, and this project makes no claim that it will. There is no guarantee that anything you look at here will come true. Any positive effect is personal and may simply come from a calmer mind and clearer goals. Real results still come from your own decisions and work. If you are struggling with persistent negative thoughts, please talk to someone you trust or a mental health professional.
inside_apartment is shown as "Inside apartment")No installation, no internet and no server are needed. Open index.html in any modern
browser (Chrome, Edge, Firefox, Safari) in one of these ways:
index.html in File Explorer (Windows), Finder (macOS) or your file manager (Linux).index.html onto an open browser window.Ctrl+O (Cmd+O on macOS), find the manifest-loop folder
and select index.html.file:///C:/Users/<you>/Desktop/manifest-loop/index.html on Windows or
file:///home/<you>/manifest-loop/index.html on Linux.Then click Start. The sample images and music are already in the playlist.
Tip: press F for fullscreen, and add the page to your bookmarks so it is one click away.
Requires Python 3.
Windows: double-click start.bat
Linux / macOS:
chmod +x start.sh scripts/generate-playlist.sh
./start.sh
The script refreshes the playlist, starts Python's built-in http.server on port 8765,
and prints two addresses:
http://localhost:8765 for this computerhttp://<your-ip>:8765 for your phone or TV (same Wi-Fi network)Use a different port with PORT=9000 ./start.sh (Linux / macOS) or set PORT=9000 before
running start.bat (Windows).
Phone can't connect? Your firewall is probably blocking the port. On Windows, make sure your network is set to Private (not Public) and allow Python through the firewall.
For a home server or Raspberry Pi, see the example config in
nginx/manifest-loop.conf. It serves the slideshow on port 8080,
caches images and music, and blocks access to the helper scripts.
Your vision board works best with pictures of your goals. Every folder inside images/
becomes one category, and its name is shown in the top-left corner during the slideshow.
Use short English names, lowercase, with underscores instead of spaces. Start the name with
my_ to keep it private (see Keeping your images private).
For example: my_dream_home, my_inside_apartment, my_travel_destinations, my_healthy_body.
The my_ prefix is hidden in the slideshow, so my_dream_home is shown as "Dream home".
Windows: open the manifest-loop\images folder in File Explorer, right-click an empty
area, choose New → Folder, type the name and press Enter.
macOS: open manifest-loop/images in Finder, press Shift+Cmd+N, type the name.
Linux: right-click in your file manager and choose New Folder, or in a terminal:
mkdir -p images/my_dream_home
Supported formats: .jpg, .jpeg, .png, .webp, .gif, .avif. Large, sharp, landscape
images look best. Around 10–30 images per folder is a good start.
The browser cannot list folders on its own, so playlist.js tells the page which files exist.
Rebuild it every time you add, remove or rename images or folders:
update-playlist.batbash scripts/generate-playlist.shstart.bat and start.sh rebuild it automatically every time they start.Press F5 (or Cmd+R on macOS) in the browser and click Start. Your new category appears
on the start screen count and in the slideshow.
To remove a category, delete its folder and rebuild the playlist. You can also delete the sample
folders (dream_cars, inside_apartment, nature_retreats) once you have your own.
Put relaxing tracks into the music/ folder (.mp3, .ogg, .opus, .wav, .m4a, .flac),
then rebuild the playlist as above. Tracks play in random order. A number prefix such as
07_ only controls the file order and is hidden in the player, and underscores are shown as
spaces (07_calm_piano.mp3 is shown as "Calm Piano"). Start the file name with my_ to keep
it private.
You are free to download any images you like from the internet for your own vision board, as long as:
Most pictures on the internet are protected by copyright. Keeping a private copy for personal use at home is generally tolerated, but sharing or publishing them usually is not. This is general information, not legal advice, and the rules differ from country to country.
The sample images and music that come with this project are different: they are free to share under their licenses (see CREDITS.md).
If you use git or fork this project, anything starting with my_ inside images/ or music/
is listed in .gitignore, so it is never committed or pushed by accident.
playlist.js is ignored too, because it would list your private file names. Until you
generate it, the page uses playlist.sample.js, which lists only the bundled samples.
Your personal vision board stays on your computer.
| Button | Key | Action |
|---|---|---|
| ⏮ / ⏭ | ← / → | Previous / next image |
| ⏸ / ▶ | Space | Pause / resume |
| 🔀 Shuffle | N | New random order |
| 🎵 Music | M | Music on / off |
| ⏭ Track | Next track | |
| Slider | Volume | |
| ⛶ | F | Fullscreen |
manifest-loop/
├── index.html # The slideshow (works offline)
├── playlist.js # Generated list of your images and music (not committed)
├── playlist.sample.js # List of the bundled samples, used until playlist.js exists
├── images/
│ ├── dream_cars/
│ ├── inside_apartment/
│ └── nature_retreats/
├── music/ # Relaxing tracks
├── scripts/
│ ├── generate-playlist.ps1 # Playlist builder for Windows
│ └── generate-playlist.sh # Playlist builder for Linux / macOS
├── start.bat # Online mode for Windows (Python http.server)
├── start.sh # Online mode for Linux / macOS (Python http.server)
├── update-playlist.bat # Offline helper for Windows
├── nginx/manifest-loop.conf # Example nginx site
├── docs/demo.mp4, demo.gif # Demo video (with music) and animated preview
├── .gitignore # Keeps my_* images, my_* music and playlist.js private
└── CREDITS.md # Photographers, musicians and licenses
The sample photos are from Unsplash and the sample music is from Wikimedia Commons (public domain and Creative Commons). See CREDITS.md for every photographer, performer and license.
If you add your own images, keep in mind that photos you download from the internet are usually copyrighted. That is fine for private use at home, but do not publish or share them unless the license allows it.
A relaxing, randomized vision-board slideshow for manifestation. Images from your folders rotate every 15 seconds with calm music, pause/next/shuffle controls, and fullscreen. Works offline as plain HTML, or online via a Python http.server or nginx for your phone and TV.
HTML
0
3 commits
updated Oct 6, 2026
A calm, endlessly shuffling vision-board slideshow for manifestation. Images from your folders rotate every 15 seconds with soft transitions and relaxing music. It works offline as plain HTML, or online so you can watch it on your phone or TV.
▶ Watch the 30-second demo with music (MP4)
The demo shows the start screen, images crossfading with a slow zoom, the category label in the top-left corner, the Next, Shuffle and Pause controls, and the controls fading away when the mouse stops moving. The music is Erik Satie's Gymnopédie No. 1, one of the bundled tracks.
Manifestation is the practice of focusing your attention on what you want in life: the home, the car, the places, the feelings. manifest-loop helps with that by keeping your goals in front of you. It quietly cycles through images of the things you want while calm music plays, so you spend a few minutes a day seeing the life you are working towards.
The idea is simple:
manifest-loop is a visualization and relaxation tool, nothing more. Manifestation has not been scientifically proven to make things happen, and this project makes no claim that it will. There is no guarantee that anything you look at here will come true. Any positive effect is personal and may simply come from a calmer mind and clearer goals. Real results still come from your own decisions and work. If you are struggling with persistent negative thoughts, please talk to someone you trust or a mental health professional.
inside_apartment is shown as "Inside apartment")No installation, no internet and no server are needed. Open index.html in any modern
browser (Chrome, Edge, Firefox, Safari) in one of these ways:
index.html in File Explorer (Windows), Finder (macOS) or your file manager (Linux).index.html onto an open browser window.Ctrl+O (Cmd+O on macOS), find the manifest-loop folder
and select index.html.file:///C:/Users/<you>/Desktop/manifest-loop/index.html on Windows or
file:///home/<you>/manifest-loop/index.html on Linux.Then click Start. The sample images and music are already in the playlist.
Tip: press F for fullscreen, and add the page to your bookmarks so it is one click away.
Requires Python 3.
Windows: double-click start.bat
Linux / macOS:
chmod +x start.sh scripts/generate-playlist.sh
./start.sh
The script refreshes the playlist, starts Python's built-in http.server on port 8765,
and prints two addresses:
http://localhost:8765 for this computerhttp://<your-ip>:8765 for your phone or TV (same Wi-Fi network)Use a different port with PORT=9000 ./start.sh (Linux / macOS) or set PORT=9000 before
running start.bat (Windows).
Phone can't connect? Your firewall is probably blocking the port. On Windows, make sure your network is set to Private (not Public) and allow Python through the firewall.
For a home server or Raspberry Pi, see the example config in
nginx/manifest-loop.conf. It serves the slideshow on port 8080,
caches images and music, and blocks access to the helper scripts.
Your vision board works best with pictures of your goals. Every folder inside images/
becomes one category, and its name is shown in the top-left corner during the slideshow.
Use short English names, lowercase, with underscores instead of spaces. Start the name with
my_ to keep it private (see Keeping your images private).
For example: my_dream_home, my_inside_apartment, my_travel_destinations, my_healthy_body.
The my_ prefix is hidden in the slideshow, so my_dream_home is shown as "Dream home".
Windows: open the manifest-loop\images folder in File Explorer, right-click an empty
area, choose New → Folder, type the name and press Enter.
macOS: open manifest-loop/images in Finder, press Shift+Cmd+N, type the name.
Linux: right-click in your file manager and choose New Folder, or in a terminal:
mkdir -p images/my_dream_home
Supported formats: .jpg, .jpeg, .png, .webp, .gif, .avif. Large, sharp, landscape
images look best. Around 10–30 images per folder is a good start.
The browser cannot list folders on its own, so playlist.js tells the page which files exist.
Rebuild it every time you add, remove or rename images or folders:
update-playlist.batbash scripts/generate-playlist.shstart.bat and start.sh rebuild it automatically every time they start.Press F5 (or Cmd+R on macOS) in the browser and click Start. Your new category appears
on the start screen count and in the slideshow.
To remove a category, delete its folder and rebuild the playlist. You can also delete the sample
folders (dream_cars, inside_apartment, nature_retreats) once you have your own.
Put relaxing tracks into the music/ folder (.mp3, .ogg, .opus, .wav, .m4a, .flac),
then rebuild the playlist as above. Tracks play in random order. A number prefix such as
07_ only controls the file order and is hidden in the player, and underscores are shown as
spaces (07_calm_piano.mp3 is shown as "Calm Piano"). Start the file name with my_ to keep
it private.
You are free to download any images you like from the internet for your own vision board, as long as:
Most pictures on the internet are protected by copyright. Keeping a private copy for personal use at home is generally tolerated, but sharing or publishing them usually is not. This is general information, not legal advice, and the rules differ from country to country.
The sample images and music that come with this project are different: they are free to share under their licenses (see CREDITS.md).
If you use git or fork this project, anything starting with my_ inside images/ or music/
is listed in .gitignore, so it is never committed or pushed by accident.
playlist.js is ignored too, because it would list your private file names. Until you
generate it, the page uses playlist.sample.js, which lists only the bundled samples.
Your personal vision board stays on your computer.
| Button | Key | Action |
|---|---|---|
| ⏮ / ⏭ | ← / → | Previous / next image |
| ⏸ / ▶ | Space | Pause / resume |
| 🔀 Shuffle | N | New random order |
| 🎵 Music | M | Music on / off |
| ⏭ Track | Next track | |
| Slider | Volume | |
| ⛶ | F | Fullscreen |
manifest-loop/
├── index.html # The slideshow (works offline)
├── playlist.js # Generated list of your images and music (not committed)
├── playlist.sample.js # List of the bundled samples, used until playlist.js exists
├── images/
│ ├── dream_cars/
│ ├── inside_apartment/
│ └── nature_retreats/
├── music/ # Relaxing tracks
├── scripts/
│ ├── generate-playlist.ps1 # Playlist builder for Windows
│ └── generate-playlist.sh # Playlist builder for Linux / macOS
├── start.bat # Online mode for Windows (Python http.server)
├── start.sh # Online mode for Linux / macOS (Python http.server)
├── update-playlist.bat # Offline helper for Windows
├── nginx/manifest-loop.conf # Example nginx site
├── docs/demo.mp4, demo.gif # Demo video (with music) and animated preview
├── .gitignore # Keeps my_* images, my_* music and playlist.js private
└── CREDITS.md # Photographers, musicians and licenses
The sample photos are from Unsplash and the sample music is from Wikimedia Commons (public domain and Creative Commons). See CREDITS.md for every photographer, performer and license.
If you add your own images, keep in mind that photos you download from the internet are usually copyrighted. That is fine for private use at home, but do not publish or share them unless the license allows it.