Commit Graph

240 Commits

Author SHA1 Message Date
semantic-release-bot 8b3c689f86 chore(release): 1.0.0-alpha.25 [skip ci]
# [1.0.0-alpha.25](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.24...v1.0.0-alpha.25) (2020-11-30)

### Features

* **platforms:** add podfriend ([9fdc8d3](9fdc8d3293))
2020-11-30 11:16:55 +00:00
semantic-release-bot 74759dae14 chore(release): 1.0.0-alpha.24 [skip ci]
# [1.0.0-alpha.24](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2020-11-26)

### Features

* **monetization:** add Web Monetization support ([96a6026](96a6026f1d))
2020-11-26 18:58:02 +00:00
semantic-release-bot e8771755b7 chore(release): 1.0.0-alpha.23 [skip ci]
# [1.0.0-alpha.23](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.22...v1.0.0-alpha.23) (2020-11-24)

### Bug Fixes

* define podcastNamespaceLink value ([0d744d2](0d744d212d))
2020-11-24 21:10:20 +00:00
semantic-release-bot 674ffd1cfb chore(release): 1.0.0-alpha.22 [skip ci]
# [1.0.0-alpha.22](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.21...v1.0.0-alpha.22) (2020-11-24)

### Features

* **rss:** add transcript and chapters support ([e769d83](e769d83a93)), closes [#72](https://code.podlibre.org/podlibre/castopod/issues/72) [#82](https://code.podlibre.org/podlibre/castopod/issues/82)
2020-11-24 20:21:59 +00:00
semantic-release-bot b9c8008062 chore(release): 1.0.0-alpha.21 [skip ci]
# [1.0.0-alpha.21](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.20...v1.0.0-alpha.21) (2020-11-24)

### Features

* **platforms:** add Fediverse and some funding platforms, add link on logo ([afc3d50](afc3d50289))
2020-11-24 18:25:10 +00:00
semantic-release-bot e6e21ddc3f chore(release): 1.0.0-alpha.20 [skip ci]
# [1.0.0-alpha.20](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.19...v1.0.0-alpha.20) (2020-11-24)

### Bug Fixes

* **import:** use <image><url> tag when no <itunes:image> is present ([20e607a](20e607afb7))

### Features

* **rss:** add podcast-namespace tags for platforms + previousUrl tag ([dbba8dc](dbba8dc581)), closes [#73](https://code.podlibre.org/podlibre/castopod/issues/73) [#75](https://code.podlibre.org/podlibre/castopod/issues/75) [#76](https://code.podlibre.org/podlibre/castopod/issues/76) [#80](https://code.podlibre.org/podlibre/castopod/issues/80)
2020-11-24 16:50:21 +00:00
semantic-release-bot 7ee579d054 chore(release): 1.0.0-alpha.19 [skip ci]
# [1.0.0-alpha.19](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.18...v1.0.0-alpha.19) (2020-11-13)

### Bug Fixes

* handle HEAD requests on podcast_feed route ([74b2640](74b2640f2a)), closes [#79](https://code.podlibre.org/podlibre/castopod/issues/79)
2020-11-13 16:10:23 +00:00
semantic-release-bot b619e6d88f chore(release): 1.0.0-alpha.18 [skip ci]
# [1.0.0-alpha.18](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.17...v1.0.0-alpha.18) (2020-11-09)

### Features

* **platforms:** add Podcast Index ([ad52b1c](ad52b1cc2b))
2020-11-09 17:17:51 +00:00
semantic-release-bot d65f26e80a chore(release): 1.0.0-alpha.17 [skip ci]
# [1.0.0-alpha.17](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) (2020-11-05)

### Bug Fixes

* **open-graph:** replace non existant episode description to podcast description in podcast page ([b02584e](b02584ee60))
2020-11-05 19:04:14 +00:00
semantic-release-bot 50b52f904e chore(release): 1.0.0-alpha.16 [skip ci]
# [1.0.0-alpha.16](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) (2020-11-04)

### Features

* add Open Graph and Twitter meta tags ([af970b8](af970b8bac)), closes [#41](https://code.podlibre.org/podlibre/castopod/issues/41)
2020-11-04 17:07:18 +00:00
semantic-release-bot 0e38dcca4a chore(release): 1.0.0-alpha.15 [skip ci]
# [1.0.0-alpha.15](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2020-11-03)

### Features

* **analytics:** add 'other' group to pie charts in order to display more accurate data ([73acef9](73acef933f))
2020-11-03 14:18:26 +00:00
semantic-release-bot ba89fd590d chore(release): 1.0.0-alpha.14 [skip ci]
# [1.0.0-alpha.14](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.13...v1.0.0-alpha.14) (2020-11-02)

### Features

* **analytics:** add weekday and hour bar charts ([8ab3132](8ab313296b))
2020-11-02 18:19:13 +00:00
semantic-release-bot 79a20a3bc8 chore(release): 1.0.0-alpha.13 [skip ci]
# [1.0.0-alpha.13](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2020-10-29)

### Bug Fixes

* **episodes-table:** set descriptions to be not null ([6774ec1](6774ec10fa))

### Features

* add episode_numbering() component helper to display episode and season numbers ([3f4a6bd](3f4a6bd0b9))
* **episodes:** replace all audio file URL parameters with base64 encoded data ([e1f65cd](e1f65cd3b5))
2020-10-29 17:56:08 +00:00
semantic-release-bot 21da91eb9d chore(release): 1.0.0-alpha.12 [skip ci]
# [1.0.0-alpha.12](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.11...v1.0.0-alpha.12) (2020-10-26)

### Bug Fixes

* replace getWebEnclosureUrl with getEnclosureWebUrl ([8122cea](8122ceaf8a))
2020-10-26 17:30:40 +00:00
semantic-release-bot 0683ea94d8 chore(release): 1.0.0-alpha.11 [skip ci]
# [1.0.0-alpha.11](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.10...v1.0.0-alpha.11) (2020-10-26)

### Features

* add CDN url ([972bcbf](972bcbf65e)), closes [#37](https://code.podlibre.org/podlibre/castopod/issues/37)
2020-10-26 16:17:35 +00:00
semantic-release-bot 384b6b27a3 chore(release): 1.0.0-alpha.10 [skip ci]
# [1.0.0-alpha.10](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.9...v1.0.0-alpha.10) (2020-10-26)

### Bug Fixes

* **install:** redirect to host_url install route on instanceConfig validation error ([99250b1](99250b1868))
2020-10-26 15:29:29 +00:00
semantic-release-bot 414b23a3b7 chore(release): 1.0.0-alpha.9 [skip ci]
# [1.0.0-alpha.9](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2020-10-26)

### Features

* display castopod version in admin footer ([9f2574e](9f2574e6fb)), closes [#68](https://code.podlibre.org/podlibre/castopod/issues/68)
2020-10-26 14:20:19 +00:00
semantic-release-bot 6b36a80102 chore(release): 1.0.0-alpha.8 [skip ci]
# [1.0.0-alpha.8](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.7...v1.0.0-alpha.8) (2020-10-22)

### Features

* **episodes:** schedule episode with future publication_date by using cache expiration time ([4f1e773](4f1e773c0f)), closes [#47](https://code.podlibre.org/podlibre/castopod/issues/47)
2020-10-22 17:49:16 +00:00
semantic-release-bot 0ab17d1075 chore(release): 1.0.0-alpha.7 [skip ci]
# [1.0.0-alpha.7](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2020-10-21)

### Features

* **analytics:** add service name from rss user-agent ([7202b98](7202b9867b))

### BREAKING CHANGES

* **analytics:** analytics_podcasts_by_player table and analytics_podcasts procedure were updated
2020-10-21 16:08:07 +00:00
Benjamin Bellamy 7202b9867b feat(analytics): add service name from rss user-agent
BREAKING CHANGE: analytics_podcasts_by_player table and analytics_podcasts procedure were updated
2020-10-21 16:04:18 +00:00
semantic-release-bot 8ca5b33b60 chore(release): 1.0.0-alpha.6 [skip ci]
# [1.0.0-alpha.6](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.5...v1.0.0-alpha.6) (2020-10-20)

### Bug Fixes

* **cache:** add locale for podcast and episode pages + clear some persisting cache in models ([9cec8a8](9cec8a81cc)), closes [#42](https://code.podlibre.org/podlibre/castopod/issues/42) [#61](https://code.podlibre.org/podlibre/castopod/issues/61)
2020-10-20 15:50:31 +00:00
semantic-release-bot a354940e5e chore(release): 1.0.0-alpha.5 [skip ci]
# [1.0.0-alpha.5](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2020-10-20)

### Features

* add lock podcast according to the Podcastindex podcast-namespace to prevent unauthozized import ([72b3012](72b301272e))
2020-10-20 13:50:01 +00:00
semantic-release-bot e49b223926 chore(release): 1.0.0-alpha.4 [skip ci]
# [1.0.0-alpha.4](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2020-10-20)

### Features

* **analytics:** add charts and data export ([78625c4](78625c471b))
2020-10-20 09:42:47 +00:00
semantic-release-bot 112a71d867 chore(release): 1.0.0-alpha.3 [skip ci]
# [1.0.0-alpha.3](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2020-10-19)

### Bug Fixes

* **analytics:** remove charts empty values + remove useless language cache ([1678794](1678794153))
2020-10-19 16:50:56 +00:00
semantic-release-bot bc8b88f6f6 chore(release): 1.0.0-alpha.2 [skip ci]
# [1.0.0-alpha.2](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2020-10-19)

### Features

* add cumulative listening time charts ([588b4d2](588b4d28da))
2020-10-19 10:46:00 +00:00
semantic-release-bot 14733105e6 chore(release): 1.0.0-alpha.1 [skip ci]
# 1.0.0-alpha.1 (2020-10-16)

### Bug Fixes

* add public/media folder to castopod bundle ([8053d35](8053d3521b)), closes [#52](https://code.podlibre.org/podlibre/castopod/issues/52)
* add where condition to get episode count without deleted episodes ([7661734](7661734ed2)), closes [#67](https://code.podlibre.org/podlibre/castopod/issues/67)
* comment all cache clean after page update to prevent analytics cache deletion ([e6197a4](e6197a4972))
* correct chart data ([4d3e9c8](4d3e9c8c02))
* correct percona compatibility issue ([e53f819](e53f819264))
* correct php-fpm issues ([1ef55d7](1ef55d7315))
* correct referrer bug ([ed69b2f](ed69b2f500))
* correction for servers with low int precision ([31b7828](31b7828e77))
* declare typed properties in PHPDoc for php<7.4 ([14dd44d](14dd44d03d)), closes [#23](https://code.podlibre.org/podlibre/castopod/issues/23)
* escape generated feed tag values and remove new lines from public pages meta description ([6238a43](6238a43863)), closes [#57](https://code.podlibre.org/podlibre/castopod/issues/57) [#46](https://code.podlibre.org/podlibre/castopod/issues/46)
* fix layout bugs in admin and update translation files ([a834171](a83417180c)), closes [#40](https://code.podlibre.org/podlibre/castopod/issues/40)
* minor corrections ([13be386](13be386842))
* move analytics to helper ([d311917](d31191732e))
* re-order graph values ([35f633b](35f633b4c7))
* remove required for other_categories field and add podcast_id to latest podcasts query ([5417be0](5417be0049))
* rename issue_templates labels ([9f00305](9f00305844))
* rename MyAccount controller file ([e109df3](e109df3004)), closes [#60](https://code.podlibre.org/podlibre/castopod/issues/60)
* reorder fields as composite primary keys for analytics tables ([9660aa9](9660aa97c8))
* replace website key for webpages in breadcrumb translate file ([50e32ff](50e32ff756))
* set episode duration translation to hardcoded english ([c39efc9](c39efc9489)), closes [#64](https://code.podlibre.org/podlibre/castopod/issues/64)
* set episode guid upon episode creation ([ad8b153](ad8b153f2a)), closes [#48](https://code.podlibre.org/podlibre/castopod/issues/48)
* update purgecss content path for php helper files ([eb70bb4](eb70bb4f70)), closes [#59](https://code.podlibre.org/podlibre/castopod/issues/59)
* **install:** redirect to input baseUrl after instance config ([2426af7](2426af7de8)), closes [#53](https://code.podlibre.org/podlibre/castopod/issues/53)
* **platforms:** display platform link only when visible is toggled on ([6e503c8](6e503c8d61)), closes [#39](https://code.podlibre.org/podlibre/castopod/issues/39)
* sort episodic podcasts by season ([d7b6794](d7b6794f68))
* update .htaccess for shared hosting config ([2379826](2379826352))
* update iso-369 language table seeder ([0c90db4](0c90db44c4))
* **package.json:** update destination of postcss generation scripts ([21413f8](21413f8af3))
* use slash instead of backslash to call layout ([a80adb2](a80adb2295))

### Features

* add alternate rss feed link tag to podcast page head ([a973c09](a973c097d5)), closes [#35](https://code.podlibre.org/podlibre/castopod/issues/35)
* add analytics and unknown useragents ([ec92e65](ec92e65aa4))
* add breadcrumb in admin area ([7fb1de2](7fb1de2cf3)), closes [#17](https://code.podlibre.org/podlibre/castopod/issues/17)
* add french translation ([196920d](196920d62f))
* add install wizard form to bootstrap database and create the first superadmin user ([cba871c](cba871c5df)), closes [#2](https://code.podlibre.org/podlibre/castopod/issues/2)
* add ISO 3166 country codes ([97cd94b](97cd94b474))
* add map analytics, add episodes analytics, clean analytics page layout, translate countries ([07eae83](07eae83a00))
* add npm for js dependencies + move src/ files to root folder ([cbb83a6](cbb83a6f30))
* add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.) ([9c224a8](9c224a8ac6)), closes [#24](https://code.podlibre.org/podlibre/castopod/issues/24)
* add platform models ([a333d29](a333d29196))
* add platforms form in podcast settings ([043f49c](043f49c784))
* add platforms tables ([ce59344](ce5934419a))
* add unique listeners analytics ([3a49258](3a4925816f))
* add user permissions and basic groups to handle authorizations ([d58e518](d58e51874a)), closes [#3](https://code.podlibre.org/podlibre/castopod/issues/3) [#18](https://code.podlibre.org/podlibre/castopod/issues/18)
* create optimized & resized images upon upload ([02e4441](02e4441f98)), closes [#6](https://code.podlibre.org/podlibre/castopod/issues/6)
* display legal disclaimer and warning on podcast import page ([2f07992](2f07992e55)), closes [#34](https://code.podlibre.org/podlibre/castopod/issues/34)
* edit + delete podcast and episode ([ac5f0c7](ac5f0c7328))
* enhance admin ui with responsive design and ux improvements ([2d44b45](2d44b457a0)), closes [#31](https://code.podlibre.org/podlibre/castopod/issues/31) [#9](https://code.podlibre.org/podlibre/castopod/issues/9)
* enhance ui using javascript in admin area ([c0e66d5](c0e66d5f70))
* import podcast from an rss feed url ([9a5d5a1](9a5d5a15b4)), closes [#21](https://code.podlibre.org/podlibre/castopod/issues/21)
* set podcast / episode description in the pages description meta tag ([1c4a504](1c4a50442b)), closes [#44](https://code.podlibre.org/podlibre/castopod/issues/44)
* update analytics so to meet IABv2 requirements ([03e23a2](03e23a28bf)), closes [#10](https://code.podlibre.org/podlibre/castopod/issues/10)
* **cache:** add podcast and episode pages to cache + clear them after insert or update ([da0f047](da0f047281))
* **categories:** create model, entity, migrations and seeds ([f73b042](f73b042cc0))
* **devcontainer:** add devcontainer settings for dev environment ([69e7266](69e7266736))
* **episodes:** add create form and view pages for episode ([f3b2c8b](f3b2c8b84f)), closes [#1](https://code.podlibre.org/podlibre/castopod/issues/1)
* **episodes:** add migrations, model and entity for episodes table ([0444821](044482174e))
* **podcast:** create a podcast using form ([1202ba3](1202ba3545))
* **podcast-form:** update routes and redirect to podcast page ([12ce905](12ce905799))
* **public-ui:** adapt public podcast and episode pages to wireframes ([40a0535](40a0535fc1)), closes [#30](https://code.podlibre.org/podlibre/castopod/issues/30) [#13](https://code.podlibre.org/podlibre/castopod/issues/13)
* **rss:** generate rss feed from podcast entity ([c815ecd](c815ecd664))
* **users:** add myth-auth to handle users crud + add admin gateway only accessible by login ([c63a077](c63a077618)), closes [#11](https://code.podlibre.org/podlibre/castopod/issues/11)
* minor corrections to some tables ([3bf9420](3bf9420b59))
* write id3v2 tags to episode's audio file ([4651d01](4651d01a84))

### Reverts

* use basic input file for episodes audio files instead of button for better UX ([d5f22fb](d5f22fbb38))
2020-10-16 15:26:13 +00:00
Yassine Doghri 6c36888a21 ci(release): automate castopod versioned releases using semantic-release
closes #38
2020-10-16 15:17:08 +00:00
Benjamin Bellamy 03e23a28bf feat: update analytics so to meet IABv2 requirements
- https://iabtechlab.com/wp-content/uploads/2017/12/Podcast_Measurement_v2-Dec-20-2017.pdf
  - no IP address is ever stored on the server. Only aggregate data is stored in the dababase.
  - rolling 24-hour window
  - castopod does not do pre-load
  - IP Blacklisting https://github.com/client9/ipcat
  - user-agent Filtering https://github.com/opawg/user-agents
  - ignores 2 bytes range "Range: 0-1" (performed by official Apple iOS Podcast app)
  - in case of partial content, adds up all requests to check >1mn was downloaded
  - identifying Uniques is done with a combination of IP Address and User Agent
- add AMcharts
- add some graphs
- add regions to analytics
- add ipcat blacklist
- enhance useragents performances
- add filesize and header size in order to calculate 1mn downloads
- update publisher ID3 field
- update castopod icon
- add disclaimer and warning import form translation
- update docs/setup-development.md

closes #10
2020-10-15 14:42:02 +00:00
Yassine Doghri 2d44b457a0 feat: enhance admin ui with responsive design and ux improvements
- add podcast sidebar navigation
- add podcast dashboard with latest episodes
- add pagination to podcast episodes
- add components helper to reuse ui components (button, data_table, etc.)
- enhance podcast and episode forms by splitting them into form sections
- add hint tooltips to podcast and episode forms
- transform radio inputs as buttons for better ux
- replace explicit field by parental_advisory
- replace author field by publisher
- add podcasts_categories table to set multiple categories
- use choices.js to enhance multiselect fields
- update Language files
- update js dependencies to latest versions

closes #31, #9
2020-10-15 14:41:56 +00:00
Benjamin Bellamy 9a5d5a15b4 feat: import podcast from an rss feed url
* add podcast import form
* add League\\HTMLToMarkdown
* add guid field in podcast table
* change podcast category from string to id

closes #21
2020-10-15 14:41:36 +00:00
Yassine Doghri cba871c5df feat: add install wizard form to bootstrap database and create the first superadmin user
- generate .env file to configure instance's environment
- add phpdotenv dependency to verify .env file
- add AppSeeder to call all required seeds at once
- add env and superadmin form views using form helpers

closes #2
2020-10-15 14:41:28 +00:00
Yassine Doghri ed6e953010 refactor: add php_codesniffer to define castopod's coding style based on psr-1
- add .editorconfig file
- format all files to comply with castopod's coding style
- switch parsedown dependency with commonmark library to better follow commonmark spec for markdown
- add prettier command to format all project files at once

closes #16
2020-10-15 14:41:22 +00:00
Yassine Doghri 58364bfed1 refactor(auth): change contributor's role logic to have it included in the users_podcasts table
- update myth-auth and codeigniter to latest develop changes
- improve permission check: remove all
dynamic permissions per podcast and overwrite myth-auth services and permission filter
- remove
unnecessary code because of myth-auth upgrade
- refactor some controller code for better clarity
-
add remaining seeders in docs

closes #19, #20
2020-10-15 14:41:14 +00:00
Yassine Doghri e0da11517d refactor: update js files to typescript and replace parcel with rollup
- add basic rollup config to bundle minified and browser compatible js
- use babel to transpile
typescript files to js
- add static code checkers: eslint and stylelint
- update package.json
scripts
- update DEPENDENCIES.md file to include rollup and popper
- set html in rss feed
description fields
- update Podcast and Episode entities to add description_html attribute
generated by parsing markdown to html using parsedown

#9
2020-10-15 14:41:12 +00:00
Yassine Doghri c0e66d5f70 feat: enhance ui using javascript in admin area
- bundle js using parcel
- add markdown editor, html editor, dropdown and tooltip features using third-party packages
- integrate optimized inline svg icons from RemixIcon using svgo and a php helper
- add scripts in package.json to bundle icons, images, css and js
- update tailwind config to add purgecss lookups and typography plugin
- refactor views to add missing pages in user journey
- update admin's holy grail layout using css grid
2020-10-15 14:41:09 +00:00
Yassine Doghri d58e51874a feat: add user permissions and basic groups to handle authorizations
- add AuthSeeder to bootstrap authorization data and remove UserSeeder
- create a superadmin group having all authorizations
- refactor routes and controller methods to separate get and post requests
- refactor admin views with a title section in layout
- add contributors section to podcasts to manage contributions (add, edit roles and remove)

closes #3, #18
2020-10-15 14:41:06 +00:00
Yassine Doghri c63a077618 feat(users): add myth-auth to handle users crud + add admin gateway only accessible by login
- overwrite myth/auth config with castopod app needs
- create custom views for users authentication
- add admin area bootstrapped by admin controller
- shift podcast and episodes crud to admin area
- reorganize view layouts
- update docs for database migration
- add myth-auth to DEPENDENCIES.md

closes #11
2020-10-15 14:41:03 +00:00
Benjamin Bellamy ec92e65aa4 feat: add analytics and unknown useragents 2020-10-15 14:40:51 +00:00
Yassine Doghri f3b2c8b84f feat(episodes): add create form and view pages for episode
- add james-heinrich/getid3 library as a dependency to composer.json
- update DEPENDENCIES.md file
- fix episodes table migration script
- add js devDependencies: prettier, @prettier/plugin-php and lint-staged to automatically format staged files before commit
- reformat all files to the prettier format
- refactor code by separating some logic as helper functions
- overwrite existing files when uploading new files with the same name

fixes #1
2020-10-15 14:40:47 +00:00
Yassine Doghri cbb83a6f30 feat: add npm for js dependencies + move src/ files to root folder
- add node service in docker-compose.yml
- update .devcontainer Dockerfile by adding node, npm and vim
- init package.json for npm with tailwindcss, postcss, commitlint and commitizen as dev dependencies
- update default layout main header and footer
- replace CI's welcome_message.php with home.php listing all podcasts
- add AUTHORS.md file
- add docs folder in which to place castopod's technical documentation
2020-10-15 14:05:36 +00:00