Skip to content

alekblom/artistier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Artistier

Self-hosted platform for artists. Blog, newsletter, and NFT storefront — no frameworks, no build tools, no dependencies.

Features

  • Blog — Markdown posts with slug-based URLs, create/edit/delete from the frontend
  • Newsletter — Email subscribe with double opt-in, drip sequence, admin management
  • NFT Storefront — Sui blockchain + Walrus storage, USDC payments, collection/piece pages
  • Admin Dashboard — Manage emails, subscribers, collections, and NFTs behind a password login
  • Privacy & Compliance — Auto-generated privacy policy, unsubscribe tokens, GDPR-friendly

Tech Stack

PHP + SQLite + Sui Move + Walrus + ElasticEmail. All vanilla, zero dependencies.

Quick Start

git clone https://github.com/AleBlom/artistier.git
cd artistier

Directory Layout

├── config/          ← configuration
├── contract/        ← Sui Move smart contract
├── cron/            ← email drip cron script
├── logs/            ← log files (auto-created)
└── public/          ← web root
    ├── api/         ← JSON API endpoints
    ├── css/         ← stylesheets
    ├── db/          ← SQLite database + init script
    ├── js/          ← frontend scripts
    └── img/         ← favicon + uploads

Deployment

Option A: VPS / Dedicated Server — Point your Apache DocumentRoot to the public/ directory. Everything works out of the box.

Option B: Shared Hosting — Copy everything into your web root:

public_html/          ← your web root
├── config/           ← auto-protected by .htaccess
├── cron/             ← auto-protected by .htaccess
├── logs/             ← auto-protected by .htaccess
├── .htaccess
├── bootstrap.php
├── index.php
├── api/
├── css/
├── db/
├── js/
└── img/

A bootstrap.php auto-detects which layout you're using. Sensitive directories (config/, cron/, logs/) are protected by both their own .htaccess deny rules and rewrite rules in the main .htaccess.

Setup

  1. Copy config files:

    cp config/site.example.php config/site.php
    cp config/email.example.php config/email.php
    cp config/nft.example.php config/nft.php
    cp config/homepage.example.php config/homepage.php
  2. Edit config/site.php with your name, domain, tagline, and social links.

  3. Init the database:

    php public/db/init.php        # Option A
    php db/init.php               # Option B (shared hosting)
  4. Add your profile picture at img/pfp.jpg (in your web root).

  5. Visit your site. Log in with password changeme, then change it immediately.

Configuration

File What it does
config/site.php Site name, tagline, domain, legal info, social links
config/email.php ElasticEmail API key, sender address
config/nft.php Sui network, contract IDs, Walrus URLs, storefront info
config/homepage.php Custom HTML sections on the homepage (commissions, exhibitions, etc.)

Newsletter Setup

  1. Sign up at ElasticEmail and get an API key.

  2. Fill in config/email.php with your API key and sender address.

  3. Set up a daily cron job:

    0 9 * * * php /path/to/cron/email-sequence.php
    
  4. Create your drip emails in the admin dashboard under Email Sequence.

NFT Storefront Setup

Requires Sui CLI.

  1. Deploy the contract:

    cd contract
    sui client publish --gas-budget 100000000
  2. Copy the output IDs into config/nft.php:

    • SUI_PACKAGE_ID — the published package
    • SUI_MARKETPLACE_ID — the shared Marketplace object
    • SUI_ADMIN_ADDRESS — your wallet address
    • SUI_ADMIN_CAP_ID — the AdminCap object
  3. Switch to mainnet when ready: update SUI_NETWORK, SUI_RPC_URL, and Walrus URLs in the config.

  4. Collections and NFTs are managed from the admin dashboard. Images upload to Walrus, minting happens via the Sui wallet browser extension.

Security

Sensitive directories are protected with layered security:

  • config/ — Contains API keys and secrets. Blocked by its own .htaccess deny rule + main .htaccess rewrite rule. On VPS setups, it's outside the web root entirely.
  • cron/ — Email sending scripts. Same dual protection.
  • logs/ — Log files. Same dual protection.
  • db/ — SQLite database. Blocked by .htaccess deny rule. .db files also blocked by <Files> rule.

Requirements

  • PHP 7.4+
  • SQLite3 (PDO)
  • Apache with mod_rewrite
  • cURL extension (for email API)

License

MIT

About

Open source website platform for artists with USDC NFT minting and storefront + blog and newsletter. Runs on even the cheapest shared hosting.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors