Giter Club home page Giter Club logo

catalyst's Introduction

Catalyst - Facilitating Commissions

Catalyst served to facilitate the process of commissioning through a simple, unified, and mobile-friendly way for artists to easily list their prices, receive and track commissions, and much more.

Unfortunately, we have decided to shut down the project. Hopefully someone else will revolutionize this space in the future!

Thanks to everyone who helped; we had a good run.

Running Locally

Since this project is open-source, you are welcome to fork this project and run it locally for yourself. However, please be aware that the ecosystem is quite complex and we provide no warranty nor maintenance.

We provide a Docker image for running the project locally. To build it, use the following:

docker build -t catalyst .

This container exposes port 8080 and requires a few volumes:

  • /var/www/catalyst/keys
    • You must generate a RSA private and public keypair using the following: sh openssl genrsa -des3 -out key.pem 4096 # any password will do openssl rsa -in key.pem -out private.pem -outform PEM openssl rsa -in private.pem -outform PEM -pubout -out public.pem

    • Then, place the private key, including the ------BEGIN... and END, in a file key.pem;

    • Finally, place the contents of public.pem, without the ------BEGIN... and END, into key.pub

Finally, there are many environment variables:

  • Database configuration:
    • DB_HOST default mariadb
    • DB_PORT default 3306
    • DB_USER default mariadb
    • DB_PASS default mariadb
    • DB_NAME default catalyst
  • Communication:
    • NO_REPLY_PASSWORD is the password for email [email protected] (hardcoded in Email class)
    • SMTP_SERVER default localhost
    • SMTP_PORT default 1234
  • CAPTCHAs
    • All of these will not have any effect unless the site is moved out of development mode, which is currently not supported.
    • These are only kept for legacy reasons. All CAPTCHAs shown will say "for development only" and not provide any protection.
    • EMAIL_LIST_CAPTCHA_SITE, EMAIL_LIST_CAPTCHA_SECRET
    • EMAIL_VERIFICATION_CAPTCHA_SITE, EMAIL_VERIFICATION_CAPTCHA_SECRET
    • LOGIN_CAPTCHA_SITE, LOGIN_CAPTCHA_SECRET
    • REGISTER_CAPTCHA_SITE, REGISTER_CAPTCHA_SECRET
  • Error logging
    • ERROR_LOG_PASSWORD is the password for email [email protected] (hardcoded in Email class)
    • DISCORD_BUG_WEBHOOK_TOKEN allows sending error messages to Discord, should be format channel-id/token
    • TELEGRAM_CHAT and TELEGRAM_TOKEN allows sending error messages to Telegram; should be a chat ID and a bot token respectively

For simplicity, we provide a starter docker-compose.yaml which will startup a database. For this, you should only need to set environment variables MARIADB_ROOT_PASSWORD and DB_PASSWORD, both of which can be random values. You will also need to provide ./catalyst-keys (as described above) and ./catalyst-data (mirroring external_assets in the repository).

Please note that no SSL or security is provided in this docker compose configuration; you must use a reverse proxy like Traefik to provide SSL and other important features. Additionally, this configuration exposes port 8081 as a database management interface; you must not expose this port to the internet.

If you want to use the Docker compose file with local development, set the image name to be the same as the one you built with docker build.

We provide two prebuilt packages:

  • ghcr.io/catalyst-app/catalyst:master, everything in the project, as abandoned
  • ghcr.io/catalyst-app/catalyst:limited, a very limited version that only allows character updates/viewing on existing users. This is being hosted for a longer period to give a chance for users to migrate away from the platform.

Also, the following are not supported (although this is an incomplete list):

  • thumbnail generation for uploaded images
  • patreon integration for the about page
  • external resource auto-updating
  • production bundling/minification
  • catl.st image shortener
  • many Apache-based htaccess configuration/rewrites

catalyst's People

Contributors

54chimchars avatar ahiddenwaffle avatar dependabot[bot] avatar fauxil-fox avatar greenkeeper[bot] avatar ncovercash avatar yuyu-ren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

catalyst's Issues

Roadmap

  • Stage One: Reach out, ensure the service would be useful, that there is a demand
  • Stage Two: Basic developement, put basic infastructure in place, brand initialization
    • After this stage the site should be usable
    • Get logo done, get some initial popularity
    • Get that email list and whatnot going
    • FA forums
    • See basic features below
  • Stage Three: Big time advertising, get some initial users
    • Advertise on e621/fa?
    • PM artists and whatnot, ask them to try it out
    • Incentives
      • Give featured status, maybe a badge thing, list on about us?
      • Early adopters
      • People who contribute and search out bugs
      • People who spread it all over the place
      • Donators
  • Stage Four: Additional features
    • Take feature requests, act on them?
    • Maybe provide a meta-forum or something
    • See additional features below
  • Stage Five: Optomization
  • Stage Six: ???
  • Stage Seven: Profit
    • Featured artists and stuff ($$$)
    • Plans for more features?

Additional features

User Account

  • Email verification timeout
  • Password reset
  • Better suspended/disabled notice
  • Integration Profile Photos
  • Reporting spam/fake/stolen/inappropriate
  • Blob-based uploading (show inline)
  • Social media URL form things
  • Drag and drop uploading
  • Let artists write reviews for buyers
  • Example account

Dashboard/User Profile

  • Statistics
  • Badges

Characters

  • Blob-based uploading (show inline)
  • Report spam/fake/stolen/inappropriate
  • Drag and drop uploading
  • Sharing
  • URL access?
  • Example character

Artists

  • Streaming
  • Trello integration
  • Report spam/fake/inappropriate
  • Statistics
  • Send message to those who are watching (have added to wishlist)
  • Statistics for money made
  • Social media URL form things
  • Badges
    • Verification
  • Experience levels
    • From reviews?
  • Example page

Commission Types

  • Analytics
  • Trello
  • Direct links
  • Payments
    • Suggested types
    • Fee calculators
  • Report spam
  • Schedule opening
  • Slot numbers
  • Writers
  • Example

Commission

  • PayPal cart integration/invoice
  • integration upload
  • Sharing
  • Trello
    • Access control
  • Blob-based uploading (show inline)
  • Drag and drop uploading
  • Message which it concerns
  • Review flagging
  • Review reply
  • Report
    • Harrassment
    • Spam
    • Scam/fraud
  • Examples
    • Start
    • Middle
    • Review

Search

  • Better syntax (AND, OR, XOR, basic boolean ops)

Universal

  • SFW button (like FA's)
  • Messaging "concerning" attr
  • Pretty 404's
  • Handle input error messages better
  • Messages to email
  • Dark theme
  • Import images from FA and similar
  • Localization
  • Reporting of broken site and such
  • Blacklisting attrs

Easter eggs

  • Konami-style bulge
  • Confetti button
  • Some fun about page stuff

Potential Optimizations

  • Single user SQL fetch on normal page load
    • API calls should not use this

Known Bugs

  • CAPTCHAs show message about testing only NOT AN ISSUE
  • SideNav doesn't work on first load
  • Dropdown .active
  • Autocomplete on settings page
  • SideNav needs dividers (what i have doesn't cut it)
  • Emoji no work (thanks foxxo)
  • Login is case sensitive username
  • Something fucky with the color picker that disallows certain valid colors
  • Somethings really weird with the dragging/dropping/sorting plugins, seems to be worsening, requiring bad overrides
    • New library?
    • Longboi chips
    • Commission types
    • Images
  • Default images of something do not stay the same color when viewed on another page (e.g. character displayed on dashboard)

Basic features

  • Forms
    • Structure
      • Highly extensible and versatile class system
    • AJAX
    • HTML generation
      • Move to pQuery?
    • JS validation
    • Server-side validation
    • Fields
      • Abstract
      • Captcha
        • Development mode
      • Checkbox
        • Label with HTML
      • Color Picker
      • Password fields
        • Confirmation password field
      • Text field
        • Email field
      • Hidden input field
      • Image field
        • Inline rendering/preview?
      • Multiple image field
      • Multiple image field with preview and options
        • Reorder
        • Drag and drop uploading
        • Ability to change the credit/character inner field
        • Make it so it accepts a Form itself?
      • Numeric field
        • iOS kbd support?
      • Select field
      • Static HTML
        • Maybe a better p element thing for standardization? idk
      • Prefilling of values
      • Toggleable button clumps
        • Multiple/singular allowed
      • Toggleable button set of sets
      • Custom sets of forms that can be added/removed
        • Movable into different groups
      • Modifier generator
      • Radio buttons
      • Psuedofield, wrap a provided in a <div> with certain classes (multiple on a row?)
    • Uploading images safely
      • Token handling
      • MIME type handling
    • Completion actions
      • Abstract
      • Auto-closing modal
      • JS function on data
      • Redirection
        • Redirect based on data
      • Conditional
    • Repository
      • Pretty up with traits
  • Images
    • Better standardization
    • Versatile class
    • Handling of not-found errors
    • Generate card
      • With title/content
      • With HTML
      • With ribbon
    • Generate circular image
    • Handle pixel art
    • Traits
    • MIME handling class
    • Folders
  • Social media integrations
    • Trait?
    • Addition forms
      • Links
        • Auto-guess network
      • Text
    • Moving
    • Fix issue on dragging mirrors
  • Messages*
    • Threading
    • Replies
    • Referencing commissions
    • Handling to/fro
    • Composition forms
    • System user
  • Page stuff
    • Centralized navbar
    • Centralized footer
      • Add stats?
    • UniversalFunctions/Values cleanup
  • User
    • TOTP authentication
      • Key provisioning
      • Checking with potentially bad time
      • QR code generation with that weird library
      • Clearing login well
    • Settings form
      • Requiring old password
      • Deactivation
  • Static analysis
    • PHPStan
    • Sublime build systems
  • Database
    • Central database class for DBH
    • Column classes
    • Tables reference map
    • Database model? trait
    • Queries
      • Abstract
      • SELECT
        • DISTINCT
        • Custom columns
      • DELETE
      • INSERT
        • Multiple inserts
      • REPLACE
      • UPDATE
    • Clauses
      • Abstract Interface
      • WHERE
      • GROUP BY
      • ORDER BY
        • Multiple
      • JOIN
        • 4 types
  • Commission types
    • Creation form
      • Modifiers
      • Payment types
      • Stages
    • Editing
    • Deletion/marking correctly
    • Handling of images/examples
    • Frontend UI for actions that can be performed
    • Better UI for displaying it on artist page?
    • Rearranging
    • Trades
    • Wishlists
      • Addition
      • Removal
      • Purging?
  • Commissions*
    • Handling of trades
    • NSFW correctly
    • Character choosing
      • Multiple?
      • Allow other public ones (send the owner a message)
    • Quote process
      • Request -> quote -> approval/denial -> re-request, etc
    • Adding payment proof at any time
    • Stage workflow
      • Fuzzy estimations
      • Concrete dates
      • Just tracking, no dates
    • Work in progresses
    • Pretty table to show in progress
    • Review
      • Of client
      • Of creator
      • Starts + comment
      • Recent clients/commissioned list
  • Searching
    • Tage (attributes)
    • Artist fields
    • Commission type fields themselves
    • Reviews
  • Writing
    • Help center?
      • Support desk
      • reporting
      • DMCA
      • General rules + code of conduct
      • Explaination of all features
      • Verification of artists
      • Getting started
      • Glossary/vocabulary
    • FAQ
      • What does it cost?
      • What sets us apart?
      • How can we be free?
      • Encryption/security
      • Paying artists

Additional

User Account

  • Email verification timeout
  • Password reset
  • Better suspended/disabled notice
  • Integration Profile Photos
  • Reporting spam/fake/stolen/inappropriate
  • Examples

Dashboard/User Profile

  • Statistics
  • Badges

Characters

  • Report spam/fake/stolen/inappropriate
  • Example character

Artists

  • Streaming
  • Trello integration
  • Report spam/fake/inappropriate
  • Statistics
  • Send message to those who are watching (have added to wishlist)
  • Statistics for money made
  • Social media URL form things
  • Badges
    • Verification
  • Experience levels
    • From reviews?
  • Example page

Commission Types

  • Analytics
  • Trello
  • Direct links
  • Payments
    • Suggested types
    • Fee calculators
  • Report spam
  • Schedule opening
  • Slot numbers
  • Writers
  • Example

Commission

  • PayPal cart integration/invoice
  • integration upload
  • Sharing
  • Trello
    • Access control
  • Blob-based uploading (show inline)
  • Drag and drop uploading
  • Message which it concerns
  • Review flagging
  • Review reply
  • Report
    • Harrassment
    • Spam
    • Scam/fraud
  • Examples
    • Start
    • Middle
    • Review

Search

  • Better syntax (AND, OR, XOR, basic boolean ops)

Universal

  • SFW button (like FA's)
  • Pretty 404's
  • Messages to email
  • Dark theme
  • Import images from FA and similar
  • Localization
  • Blacklisting attrs

Easter eggs

  • Konami-style bulge
  • Confetti button
  • Some fun about page stuff

Basic features

Highest Priority

  • Basic class restructure of the base namespace
  • Info website setup
  • Remove secrets and publicise repo: https://github.com/smileytechguy/Catalyst
  • Resolve trademark issues and get a new name
  • Find Build a markdown editor

User Account Fundamentals: Complete

  • Registration
  • Login
  • Email Verification
  • CAPTCHA on important forms
  • Settings/Update
  • NSFW profile photo control
  • Deactivation

Dashboard/User Profile

  • Social Networks
    • Add
    • Re-order
    • Remove
    • Potential XSS
  • Artist page widget
  • Display scrollability
    • Mousewheel/scroll down?
  • Characters
    • A pretty display that works on mobile
  • Wishlist
    • A pretty display that works on mobile
    • Check for deleted
  • Commissions
    • A pretty table that works on mobile

Characters

  • Landing page
  • Creation
    • Multi-file upload
  • Editing
  • Editing Images
  • Public/private
  • NSFW picture handling
  • Removal
    • UI
    • Database cascading with existing commissions and such

Artists

  • Create a page
    • Check for deleted
  • NSFW picture handling
  • Edit
    • Social media
      • Display
      • Order
      • New
      • Edit
    • Info
    • Commission types
      • Rearrange
      • Delete
  • Show commission types
  • Basic information
  • Social medias
  • Ratings
  • Recent commissioners

Commission Type

  • Create
    • Basic data
    • Modifiers
    • Attributes
      • Global el type?
    • Payment opts
    • Stage opts
  • Type (for searching)
    • Specie
    • Type
    • SFW
    • Viewing, handle db
  • Edit
    • Basic data
      • db
    • Modifiers
      • db
    • Attributes
      • db
    • Payment opts
      • db
    • Stage opts
      • db
    • Images
  • View
    • "Collapisble"
    • Basic info
    • NSFW
    • Blurb
    • Modifiers
    • Images
    • Options
    • Payment Options
    • Closed/open
  • NSFW handling
  • Modifiers
  • Creation in a form (collapsible?)
  • Wishlist

Commission

  • Trades?
  • NSFW picture handling
  • Multiple character chooser
  • A neat display for assigned characters
  • Payment
    • Multiple
  • States
    • Pending approval
    • Denied
    • Approved; pending payment
    • Waiting for artist
      • Customizable statuses (lineart, sketch, shading, etc)
    • Finished
  • WIPs
    • Multiple
  • Review afterwards
  • Messaging integrations
  • Viewing page
    • Table+?
    • For artist
    • For commissioner
  • Timestamps

Searching

  • Artist name
  • Reviews
  • Prices
  • Attributes
  • Commission type name

Text things

  • About Page
    • Staff
    • Official accounts of staff
    • Social medias
    • story?
    • helpers/testers
  • ToS
  • Help center?
    • Support desk
    • reporting
    • DMCA
    • General rules + code of conduct
    • Explaination of all features
    • Verification of artists
    • Getting started
    • Glossary/vocabulary
  • FAQ
    • What does it cost?
    • What sets us apart?
    • How can we be free?
    • Encryption/security
    • Paying artists

Universal

  • Messages
    • Threads
  • Pixel art handling
  • NSFW image handling (fallback)
  • Markdown editor
    • Markdown spec
      • Custom containers
      • Color
      • Documentation
    • Live preview
    • Quick buttons

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.