Skip to content

Commit

Permalink
docs: update readme file
Browse files Browse the repository at this point in the history
  • Loading branch information
lotyp committed Dec 1, 2024
1 parent 9b5ede1 commit 3ab95ee
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 3 deletions.
Empty file added .github/docs/demo.mp4
Empty file.
74 changes: 71 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,88 @@
</p>
<br>

# Spiral Framework Starter Template
# Spiral Demo with Temporal Workflows.

Check failure on line 37 in README.md

View workflow job for this annotation

GitHub Actions / markdown-linting

Trailing punctuation in heading

README.md:37:38 MD026/no-trailing-punctuation Trailing punctuation in heading [Punctuation: '.'] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md026.md

This is an **opinionated** modified version of the Spiral Framework which aims at providing a Domain-Driven Design (DDD) structure.
This project demonstrates the implementation of web application transfers using [Temporal.io](https://temporal.io) with [Spiral Framework](https://spiral.dev).

It showcases how to handle complex, distributed workflows in a reliable and maintainable way.

## 📄 About

To be added...
**Imagine moving an entire website between servers - files, databases, domains - with zero downtime and automatic failure recovery.**

This is exactly what this project achieves through durable [Workflows](https://docs.temporal.io/workflows?basic-workflow-definition=php).

<br>

🙏 If you find this repository useful, consider giving it a ⭐️. Thank you!

<br>

### → The Challenge

This project uses Website Transfer from `Server A` to `Server B` as an example scenario because it shows many common distributed system challenges:

- Network issues during file transfer
- Database backup corruption
- DNS propagation delays
- Server configuration problems
- Timeout issues during large transfers

Traditional approaches require complex error handling, manual recovery procedures, and often lead to extended downtimes. This project offers a robust solution.

### → The Solution

Using Temporal.io, this app demonstrates reliable, self-healing website transfer system that:

- Automatically retries failed operations
- Resumes from the last successful step after crashes
- Provides real-time transfer status visibility
- Handles long-running operations gracefully
- Maintains consistency during the entire process

For example, here's how a website transfer is initiated:

```bash
$ make up

Check failure on line 80 in README.md

View workflow job for this annotation

GitHub Actions / markdown-linting

Dollar signs used before commands without showing output

README.md:80:1 MD014/commands-show-output Dollar signs used before commands without showing output [Context: "$ make up"] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md014.md
$ make ssh

Check failure on line 81 in README.md

View workflow job for this annotation

GitHub Actions / markdown-linting

Dollar signs used before commands without showing output

README.md:81:1 MD014/commands-show-output Dollar signs used before commands without showing output [Context: "$ make ssh"] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md014.md
$ php app.php website:transfer

Check failure on line 82 in README.md

View workflow job for this annotation

GitHub Actions / markdown-linting

Dollar signs used before commands without showing output

README.md:82:1 MD014/commands-show-output Dollar signs used before commands without showing output [Context: "$ php app.php website:transfer"] https://github.com/DavidAnson/markdownlint/blob/v0.34.0/doc/md014.md
```

You can monitor the workflow execution through the Temporal UI at:

```bash
https://temporal.spiral-app-temporal-demo.docker
```

The system then automatically orchestrates the entire process:

```mermaid
graph TD
A[Start Transfer] --> B[Backup Files]
B --> C[Release Domain]
C --> D[Backup Database]
D --> E[Transfer Backups]
E --> F[Allocate Space]
F --> G[Restore Database]
G --> H[Restore Files]
H --> I[Attach Domain]
I --> J[Complete]
```

### → Use Cases

This example can be adapted for various scenarios:

- Website migrations between hosting providers
- Server infrastructure updates
- Disaster recovery procedures
- Development environment replication

The architecture provided serves as a template for implementing other complex, distributed workflows in your applications.

<br>

## 🚀 Features

This starter template includes several added, changed, and removed features:
Expand Down

0 comments on commit 3ab95ee

Please sign in to comment.