Skip to content
Snippets Groups Projects
Forked from Ad Aures / Castopod
925 commits behind the upstream repository.
  • Yassine Doghri's avatar
    2f525c0f
    feat(fediverse): implement activitypub protocols + update user interface · 2f525c0f
    Yassine Doghri authored
    - add "ActivityPub" library to handle server to server federation and basic
      client to server protocols using activitypub:
      - add webfinger endpoint to look for actor
      - add actor definition with inbox / outbox / followers
      - remote follow an actor
      - create notes with possible preview cards
      - interract with favourites, reblogs and replies
      - block incoming actors and/or domains
      - broadcast/schedule activities to fediverse followers using a cron task
    - For castopod, the podcast is the actor:
      - overwrite the activitypub library for castopod's specific needs
      - perform basic interactions administrating a podcast to interact with fediverse users:
        - create notes with episode attachment
        - favourite and share a note + reply
        - add specific castopod_namespaces for podcasts and episodes definitions
    - overwrite CodeIgniter's Route service to include alternate-content option for
      activitystream requests
    - update episode publication logic:
      - remove publication inputs in create / edit episode form
      - publish / schedule or unpublish an episode after creation
      - the podcaster publishes a note when publishing an episode
    - Javascript / Typescript modules:
      - fix Dropdown.ts to keep dropdown menu in foreground
      - add Modal.ts for funding links modal
      - add Toggler.ts to toggle various css states in ui
    - User Interface:
      - update tailwindcss to v2
      - use castopod's pine and rose colors
      - update public layout to a 3 column layout
      - add pages in public for podcast activity, episode list and notes
      - update episode page to include linked notes
      - remove previous and next episodes from episode pages
      - show different public views depending on whether user is authenticated or not
      - use Kumbh Sans and Montserrat fonts
    - update CodeIgniter's config files
    - with CodeIgniter's new requirements, update docker environments are now based on
      php v7.3 image
    - move Image entity to Libraries
    - update composer and npm packages to latest versions
    
    closes #69 #65 #85, fixes #51 #91 #92 #88
    2f525c0f
    History
    feat(fediverse): implement activitypub protocols + update user interface
    Yassine Doghri authored
    - add "ActivityPub" library to handle server to server federation and basic
      client to server protocols using activitypub:
      - add webfinger endpoint to look for actor
      - add actor definition with inbox / outbox / followers
      - remote follow an actor
      - create notes with possible preview cards
      - interract with favourites, reblogs and replies
      - block incoming actors and/or domains
      - broadcast/schedule activities to fediverse followers using a cron task
    - For castopod, the podcast is the actor:
      - overwrite the activitypub library for castopod's specific needs
      - perform basic interactions administrating a podcast to interact with fediverse users:
        - create notes with episode attachment
        - favourite and share a note + reply
        - add specific castopod_namespaces for podcasts and episodes definitions
    - overwrite CodeIgniter's Route service to include alternate-content option for
      activitystream requests
    - update episode publication logic:
      - remove publication inputs in create / edit episode form
      - publish / schedule or unpublish an episode after creation
      - the podcaster publishes a note when publishing an episode
    - Javascript / Typescript modules:
      - fix Dropdown.ts to keep dropdown menu in foreground
      - add Modal.ts for funding links modal
      - add Toggler.ts to toggle various css states in ui
    - User Interface:
      - update tailwindcss to v2
      - use castopod's pine and rose colors
      - update public layout to a 3 column layout
      - add pages in public for podcast activity, episode list and notes
      - update episode page to include linked notes
      - remove previous and next episodes from episode pages
      - show different public views depending on whether user is authenticated or not
      - use Kumbh Sans and Montserrat fonts
    - update CodeIgniter's config files
    - with CodeIgniter's new requirements, update docker environments are now based on
      php v7.3 image
    - move Image entity to Libraries
    - update composer and npm packages to latest versions
    
    closes #69 #65 #85, fixes #51 #91 #92 #88
env 4.08 KiB
#--------------------------------------------------------------------
# Example Environment Configuration file
#
# This file can be used as a starting point for your own
# custom .env files, and contains most of the possible settings
# available in a default install.
#
# By default, all of the settings are commented out. If you want
# to override the setting, you must un-comment it by removing the '#'
# at the beginning of the line.
#--------------------------------------------------------------------

#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------

# CI_ENVIRONMENT = production

#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------

# app.baseURL = ''
# app.forceGlobalSecureRequests = false

# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
# app.sessionCookieName = 'ci_session'
# app.sessionSavePath = NULL
# app.sessionMatchIP = false
# app.sessionTimeToUpdate = 300
# app.sessionRegenerateDestroy = false

# app.cookiePrefix = ''
# app.cookieDomain = ''
# app.cookiePath = '/'
# app.cookieSecure = false
# app.cookieHTTPOnly = false
# app.cookieSameSite = 'Lax'

# app.CSRFProtection  = false
# app.CSRFTokenName   = 'csrf_test_name'
# app.CSRFCookieName  = 'csrf_cookie_name'
# app.CSRFExpire      = 7200
# app.CSRFRegenerate  = true
# app.CSRFExcludeURIs = []
# app.CSRFSameSite    = 'Lax'

# app.CSPEnabled = false

#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------

# database.default.hostname = localhost
# database.default.database = ci4
# database.default.username = root
# database.default.password = root
# database.default.DBDriver = MySQLi

# database.tests.hostname = localhost
# database.tests.database = ci4
# database.tests.username = root
# database.tests.password = root
# database.tests.DBDriver = MySQLi

#--------------------------------------------------------------------
# CONTENT SECURITY POLICY
#--------------------------------------------------------------------

# contentsecuritypolicy.reportOnly = false
# contentsecuritypolicy.defaultSrc = 'none'
# contentsecuritypolicy.scriptSrc = 'self'
# contentsecuritypolicy.styleSrc = 'self'
# contentsecuritypolicy.imageSrc = 'self'
# contentsecuritypolicy.base_uri = null
# contentsecuritypolicy.childSrc = null
# contentsecuritypolicy.connectSrc = 'self'
# contentsecuritypolicy.fontSrc = null
# contentsecuritypolicy.formAction = null
# contentsecuritypolicy.frameAncestors = null
# contentsecuritypolicy.mediaSrc = null
# contentsecuritypolicy.objectSrc = null
# contentsecuritypolicy.pluginTypes = null
# contentsecuritypolicy.reportURI = null
# contentsecuritypolicy.sandbox = false
# contentsecuritypolicy.upgradeInsecureRequests = false

#--------------------------------------------------------------------
# ENCRYPTION
#--------------------------------------------------------------------

# encryption.key =
# encryption.driver = OpenSSL
# encryption.blockSize = 16
# encryption.digest = SHA512

#--------------------------------------------------------------------
# HONEYPOT
#--------------------------------------------------------------------

# honeypot.hidden = 'true'
# honeypot.label = 'Fill This Field'
# honeypot.name = 'honeypot'
# honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
# honeypot.container = '<div style="display:none">{template}</div>'

#--------------------------------------------------------------------
# SECURITY
#--------------------------------------------------------------------

# security.tokenName  = 'csrf_token_name'
# security.headerName = 'X-CSRF-TOKEN'
# security.cookieName = 'csrf_cookie_name'
# security.expires    = 7200
# security.regenerate = true
# security.redirect   = true
# security.samesite   = 'Lax'

#--------------------------------------------------------------------
# LOGGER
#--------------------------------------------------------------------

# logger.threshold = 4