Personal-Digital-Asset-Manager/README.md
Timothy Rogers 07909c41fc
All checks were successful
Build and Publish Docker Image / build (push) Successful in 54s
use html embed instead of md
2025-05-24 20:48:49 -04:00

3.3 KiB

Assets Site

A digital asset management system built with Flask and S3-compatible storage.

Features

  • Digital asset management with metadata
  • S3-compatible storage backend (works with MinIO, public buckets only atm)
  • Automatic WebP conversion for images
  • License key management
  • Docker container support

Screenshots

Home Page

Asset View

Edit Page

Container Registry

This project includes automated container builds using Forgejo CI/CD. The container images are published to the project's container registry.

Using the Container Image

To pull the latest image:

docker pull git.hack13.dev/hack13/personal-digital-asset-manager:latest

For a specific version:

docker pull git.hack13.dev/hack13/personal-digital-asset-manager:v1.0.0

CI/CD Setup

The project uses Forgejo CI/CD to automatically build and publish container images. To set up the CI/CD pipeline:

  1. Configure the following variables in your Forgejo repository settings (Settings > Variables):

    • FORGEJO_REGISTRY: Your Forgejo registry URL (e.g., forgejo.yourdomain.com)
    • FORGEJO_OWNER: Your Forgejo username or organization name
    • FORGEJO_USER: Username for registry authentication
  2. Add the following secret in your Forgejo repository settings (Settings > Secrets):

    • FORGEJO_TOKEN: Access token for Forgejo registry authentication
  3. Enable Forgejo Actions in your repository settings

Container Tags

The following tags are automatically generated:

  • latest: Latest build from the main branch
  • v*: Release tags (e.g., v1.0.0)
  • sha-*: Build for specific commit

Development

Local Setup

  1. Clone the repository
  2. Create and activate a virtual environment
  3. Install dependencies: pip install -r requirements.txt
  4. Set up environment variables (see .env.example)
  5. Run migrations: flask db upgrade
  6. Start the server: flask run

Database Migrations

This project uses Flask-Migrate (Alembic) for database migrations. The migrations folder is version controlled and should be included in your commits.

Working with Migrations

  1. Create a new migration after model changes:

    flask db migrate -m "Description of changes"
    
  2. Review the generated migration in migrations/versions/

  3. Apply migrations:

    flask db upgrade
    
  4. Rollback migrations:

    flask db downgrade
    

First-time Setup

When cloning the repository:

  1. Initialize the database: flask db upgrade
  2. This will apply all existing migrations in order

Docker Development

Build the container:

docker build -t personal-digital-asset-manager .

Run the container:

docker run -p 5000:5000 \
  -v $(pwd)/static/uploads:/app/static/uploads \
  personal-digital-asset-manager