Skip to content

Commit

Permalink
better README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
loftwah committed Aug 12, 2024
1 parent d46df32 commit 5eb9025
Showing 1 changed file with 160 additions and 13 deletions.
173 changes: 160 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,171 @@
# README
# Linkarooie

This README would normally document whatever steps are necessary to get the
application up and running.
[![Build Status](https://github.com/loftwah/linkarooie/actions/workflows/ci.yml/badge.svg)](https://github.com/loftwah/linkarooie/actions)
[![Docker Image](https://ghcr.io/loftwah/linkarooie)](https://github.com/loftwah/linkarooie/pkgs/container/linkarooie)

Things you may want to cover:
Linkarooie is a simple and open-source alternative to Linktree, allowing you to manage and share all your important links in one place. This project was created as a replacement for BioDrop (LinkFree) after it was archived. It is built using Ruby on Rails and is designed to be easy to deploy and customize.

* Ruby version
## Features

* System dependencies
- **Custom Links:** Easily add and manage your links.
- **Analytics:** Track the performance of your links.
- **Social Integration:** Seamlessly connect all your social media profiles.
- **Responsive Design:** Works well on any device.
- **User Achievements:** Showcase your accomplishments.
- **Pinned Links:** Highlight your most important links.
- **User Profiles:** Customizable profiles with avatars, banners, and descriptions.
- **Open Graph Image Generation:** Automatically generate social media preview images.

* Configuration
## Demo

* Database creation
Check out a live demo at [linkarooie.com](https://linkarooie.com).

* Database initialization
## Getting Started

* How to run the test suite
### Prerequisites

* Services (job queues, cache servers, search engines, etc.)
- Ruby 3.2.2
- Rails 7.1.3 or higher
- SQLite3
- Node.js and npm (for asset compilation)
- Docker and Docker Compose (for containerized deployment)
- Git

* Deployment instructions
### Local Development Setup

* ...
1. Clone the repository:

```bash
git clone https://github.com/loftwah/linkarooie.git
cd linkarooie
```

2. Install dependencies:

```bash
bundle install
npm install
```

3. Set up the database:

```bash
rails db:create db:migrate
```

4. Start the Rails server:

```bash
bin/dev
```

5. Visit `http://localhost:3000` in your browser.

### Docker Deployment

1. Build and start the Docker containers:

```bash
docker compose up --build
```

2. Visit `http://localhost` in your browser.

Note: The Dockerfile uses a multi-stage build process to create a lean production image. It installs necessary dependencies, precompiles assets, and sets up the application to run as a non-root user for improved security.

### DigitalOcean Deployment

1. Set up a DigitalOcean account and generate an API token.

2. Create a DigitalOcean Droplet with Terraform:

```bash
terraform init
terraform apply -var="do_token=YOUR_DIGITALOCEAN_TOKEN"
```

3. Deploy the app using GitHub Actions:

* Ensure you have the following secrets set in your GitHub repository:
* `DROPLET_IP`: The IP address of your DigitalOcean Droplet (output from Terraform).
* `DROPLET_SSH_PRIVATE_KEY`: The private SSH key to access your Droplet.
* `GH_PAT`: Your GitHub Personal Access Token.

* Push your code to the `main` branch, and the GitHub Actions workflow will automatically deploy the latest version to your Droplet.

4. Important Note on Docker Installation:
The user data script in the Terraform configuration installs Docker using the get.docker.com script. However, this installation is not instantaneous and may take a few minutes to complete after the Droplet is created.

5. Checking Docker Installation Status:
If you encounter issues with Docker not being available immediately after Droplet creation, you can check the cloud-init logs:

```bash
ssh root@YOUR_DROPLET_IP
sudo tail -f /var/log/cloud-init-output.log
```

This will show you the progress of the initialization script, including the Docker installation.

## Configuration

### Environment Variables

- `RAILS_ENV`: Set to `production` for production environments.
- `SECRET_KEY_BASE`: Rails secret key for production.
- `DATABASE_URL`: Database connection string (if using a different database in production).

### Database

The project uses SQLite by default. For production, consider using PostgreSQL or MySQL.

## Customization

Linkarooie is highly customizable:

* **Views:** Modify the HTML/CSS in the `app/views` directory.
* **Styles:** Customize the look and feel using Tailwind CSS.
* **Features:** Add or modify features in the `app/controllers` and `app/models` directories.

## Testing

Run the test suite with:

```bash
rspec
```

## Contributing

Contributions are welcome! Please follow these steps:

1. Fork the repository
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

Please ensure your code adheres to the existing style and passes all tests.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

If you find this project helpful, please consider:

- Starring the repository on GitHub
- Sharing it with others
- Contributing to the project

## Acknowledgements

- [Ruby on Rails](https://rubyonrails.org/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Docker](https://www.docker.com/)
- [DigitalOcean](https://www.digitalocean.com/)
- [Terraform](https://www.terraform.io/)

---

Linkarooie © 2024 - Simplify Your Online Presence

0 comments on commit 5eb9025

Please sign in to comment.