rentease/README.md
Ruidy 23f3ceec21
Some checks are pending
CI / checks (push) Waiting to run
Feat/stripe integration (#50)
* feat(stripe): add Stripe payment sync and webhook support

Introduce Stripe integration for automatic payment ingestion and refund
tracking. Adds new fields to the payment model for Stripe IDs and
status,
Stripe client driver, sync service, cron job, manual API endpoint, and
public webhook handler for real-time updates. Includes tests and
documentation. Manual cash entry remains supported.

* chore(stripe): upgrade to stripe-go v83

Upgrade Stripe SDK from v79 to v83 across the codebase. Update all
imports to use github.com/stripe/stripe-go/v83 and refactor client usage
to match the new API, including changes to PaymentIntents listing.
Update documentation and plans to reference the new version. Remove
references to the old version from go.mod and go.sum.

* refactor(payment): extract payment logic to new service

Moves all payment-related logic (manual payments, Stripe sync, webhook
handling) from the booking service into a dedicated payment service
(`internal/service/payment`). Updates server, cron, and handler wiring
to
inject and use the new payment service. Adjusts tests, routes, and
documentation to reflect the new separation of concerns.

This improves cohesion, clarifies responsibilities, and prepares for
future payment features. No database schema changes are introduced.

* chore(ci): add Go and templ setup to CI workflow

This update enhances the CI workflow by adding steps to set up Go using
the version specified in go.mod, add the Go bin directory to the PATH,
and install the templ code generation tool. These additions ensure that
Go-based tooling is available for subsequent CI steps.
2025-11-21 15:47:01 +01:00

143 lines
4.7 KiB
Markdown

# Rentease
![RentEase](assets/assets/icons/favicon-main.png)
<!--toc:start-->
- [Rentease](#rentease)
- [Features](#features)
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Built With](#built-with)
- [Roadmap](#roadmap)
- [Contributing](#contributing)
- [License](#license)
Rentease is a property-management application to help landlords to manage your rental
properties efficiently. With Rentease, you can create invoices, generate activity
reports, and sync all the booking platforms you use.
## Features
- **Invoice Management**: Create and manage invoices for your rental properties
with ease.
- **Activity Reports**: Generate detailed reports of rental activities to keep track
of your property performance.
- **Platform Sync**: Sync bookings across multiple platforms to streamline your rental
management.
![RentEase Screenshot](assets/assets/img/booking_screenshot.png)
## Getting Started
To get started with Rentease, follow these steps.
### Prerequisites
You need a version of the Go programming language installed. You can either install
it via your package manager or via [Go's official website](https://go.dev/).
You also need a PostgreSQL database. You can install it locally using Homebrew or
use a cloud alternative such as Railway, fly.io, _etc._
### Installation
1. Clone the repository
```sh
git clone https://github.com/rjNemo/rentease.git
cd rentease
```
2. Install the dependencies
```sh
go mod download
```
3. **Setup PostgreSQL**:
Ensure you have PostgreSQL installed and running. Create a database for Rentease:
```sh
createdb rentease
```
4. **Configure the application**:
Create a `.env` file in the project root with the following environment variables:
```sh
DB_HOST=localhost
DB_PORT=5432
DB_USER=your_db_username
DB_PASSWORD=your_db_password
DB_NAME=rentease
# Stripe configuration (optional until you enable automatic sync)
APP_STRIPE_SECRET_KEY=sk_test_your_key
APP_STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
APP_STRIPE_ACCOUNT_ID=acct_your_account_id
```
Leave the Stripe variables blank to continue using manual cash entry only. When set, Rentease will pull payments from Stripe, process webhooks sent to `/webhooks/stripe`, and expose a manual sync endpoint at `POST /api/stripe/sync` (protected by the existing API key middleware). Providing `APP_STRIPE_ACCOUNT_ID` also enables dashboard links for synchronized card payments.
5. Start the application
```sh
make dev
```
### Development Commands
Use the included Makefile for common tasks:
- `make dev`: Run the dev container with live reload (Air) on `http://localhost:8000`.
- `make run`: Build and run the production image locally.
- `make test`: Run `go test ./...` inside the dev container.
- `make format`: Generate templ files and format code.
- `make lint`: Lint with `golangci-lint`.
- `make stop`: Stop the dev container.
6. **Access the application**:
Open your browser and go to `http://localhost:8000` to start using Rentease.
### Built With
Rentease is built using the following technologies:
- [Go](https://go.dev/): The core application logic is written in Go, providing a
robust and efficient backend.
- [Htmx](https://htmx.org/): For handling AJAX requests and enhancing the user interface
with minimal JavaScript.
- [Templ](https://templ.guide/): Used for templating and rendering dynamic HTML content.
- [Gorm](https://gorm.io/docs): An ORM library for Go, used for database interactions.
- [PostgreSQL](https://www.postgresql.org/):The database used to store all application
data.
### Service Layout
- `internal/service/booking`: booking lifecycle, items, reporting, and PDF generation.
- `internal/service/payment`: manual payments plus Stripe synchronisation and webhook handling.
## Roadmap
See the [open issues](https://github.com/users/rjNemo/projects/2/views/1) for a full
list of proposed features (and known issues).
## Contributing
Contributions are what make the open source community such an amazing place to learn,
inspire, and create. 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 with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## License
Distributed under the MIT License. See `LICENSE.md` for more information.