Initial commit: FeedPug collaborative RSS reader

7ad1745 · gmorell · 2026-06-23 16:31

179 files +15342 -0
Message
{commit_body(@commit)}

Files changed

added .dockerignore
+46 −0
@@ -0,0 +1,46 @@
1 +# This file excludes paths from the Docker build context.
2 +#
3 +# By default, Docker's build context includes all files (and folders) in the
4 +# current directory. Even if a file isn't copied into the container it is still sent to
5 +# the Docker daemon.
6 +#
7 +# There are multiple reasons to exclude files from the build context:
8 +#
9 +# 1. Prevent nested folders from being copied into the container (ex: exclude
10 +# /assets/node_modules when copying /assets)
11 +# 2. Reduce the size of the build context and improve build time (ex. /build, /deps, /doc)
12 +# 3. Avoid sending files containing sensitive information
13 +#
14 +# More information on using .dockerignore is available here:
15 +# https://docs.docker.com/engine/reference/builder/#dockerignore-file
16 +
17 +.dockerignore
18 +
19 +# Ignore git, but keep git HEAD and refs to access current commit hash if needed:
20 +#
21 +# $ cat .git/HEAD | awk '{print ".git/"$2}' | xargs cat
22 +# d0b8727759e1e0e7aa3d41707d12376e373d5ecc
23 +.git
24 +!.git/HEAD
25 +!.git/refs
26 +
27 +# Common development/test artifacts
28 +/cover/
29 +/doc/
30 +/test/
31 +/tmp/
32 +.elixir_ls
33 +
34 +# Mix artifacts
35 +/_build/
36 +/deps/
37 +*.ez
38 +
39 +# Generated on crash by the VM
40 +erl_crash.dump
41 +
42 +# Static artifacts - These should be fetched and built inside the Docker image
43 +# https://phoenix.hexdocs.pm/Mix.Tasks.Phx.Gen.Release.html#module-docker
44 +/assets/node_modules/
45 +/priv/static/assets/
46 +/priv/static/cache_manifest.json
added .formatter.exs
+6 −0
@@ -0,0 +1,6 @@
1 +[
2 + import_deps: [:ecto, :ecto_sql, :phoenix],
3 + subdirectories: ["priv/*/migrations"],
4 + plugins: [Phoenix.LiveView.HTMLFormatter],
5 + inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"]
6 +]
added .gitignore
+37 −0

Click to load diff…

added .gitlab-ci.yml
+42 −0

Click to load diff…

added AGENTS.md
+510 −0

Click to load diff…

added Dockerfile
+101 −0

Click to load diff…

added README.md
+18 −0

Click to load diff…

added android/.gitignore
+11 −0

Click to load diff…

added android/README.md
+69 −0

Click to load diff…

added android/app/build.gradle.kts
+67 −0

Click to load diff…

added android/app/proguard-rules.pro
+7 −0

Click to load diff…

added android/app/src/main/AndroidManifest.xml
+38 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/MainActivity.kt
+108 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/data/FeedPugClient.kt
+82 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/data/Models.kt
+86 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/data/PairUri.kt
+24 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/data/ThemeStore.kt
+36 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/data/TokenStore.kt
+47 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/DetailScreen.kt
+147 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/PairScreen.kt
+126 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/TimelineScreen.kt
+298 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/theme/AppTheme.kt
+136 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/theme/Theme.kt
+21 −0

Click to load diff…

added android/app/src/main/java/org/neiam/feedpug/app/ui/theme/Typography.kt
+38 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added android/app/src/main/res/mipmap-anydpi-v26/ic_icon.xml
+5 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added android/app/src/main/res/values/strings.xml
+3 −0

Click to load diff…

added android/app/src/main/res/values/themes.xml
+5 −0

Click to load diff…

added android/app/src/main/res/xml/data_extraction_rules.xml
+9 −0

Click to load diff…

added android/build.gradle.kts
+7 −0

Click to load diff…

added android/gradle.properties
+4 −0

Click to load diff…

added android/gradle/libs.versions.toml
+46 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added android/gradle/wrapper/gradle-wrapper.properties
+7 −0

Click to load diff…

added android/gradlew
+252 −0

Click to load diff…

added android/gradlew.bat
+94 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added android/settings.gradle.kts
+25 −0

Click to load diff…

added assets/css/app.css
+394 −0

Click to load diff…

added assets/js/app.js
+83 −0

Click to load diff…

added assets/tsconfig.json
+32 −0

Click to load diff…

added assets/vendor/daisyui-theme.js
+124 −0

Click to load diff…

added assets/vendor/daisyui.js
+1031 −0

Click to load diff…

added assets/vendor/heroicons.js
+43 −0

Click to load diff…

added assets/vendor/topbar.js
+138 −0

Click to load diff…

added config/config.exs
+96 −0

Click to load diff…

added config/dev.exs
+93 −0

Click to load diff…

added config/prod.exs
+32 −0

Click to load diff…

added config/runtime.exs
+259 −0

Click to load diff…

added config/test.exs
+48 −0

Click to load diff…

added lib/feed_pug.ex
+9 −0

Click to load diff…

added lib/feed_pug/accounts.ex
+386 −0

Click to load diff…

added lib/feed_pug/accounts/api_token.ex
+28 −0

Click to load diff…

added lib/feed_pug/accounts/scope.ex
+33 −0

Click to load diff…

added lib/feed_pug/accounts/user.ex
+132 −0

Click to load diff…

added lib/feed_pug/accounts/user_notifier.ex
+90 −0

Click to load diff…

added lib/feed_pug/accounts/user_token.ex
+156 −0

Click to load diff…

added lib/feed_pug/application.ex
+48 −0

Click to load diff…

added lib/feed_pug/feeds.ex
+307 −0

Click to load diff…

added lib/feed_pug/feeds/feed.ex
+53 −0

Click to load diff…

added lib/feed_pug/feeds/fetcher.ex
+253 −0

Click to load diff…

added lib/feed_pug/feeds/item.ex
+34 −0

Click to load diff…

added lib/feed_pug/feeds/item_read.ex
+14 −0

Click to load diff…

added lib/feed_pug/groups.ex
+595 −0

Click to load diff…

added lib/feed_pug/groups/follow_exclusion.ex
+24 −0

Click to load diff…

added lib/feed_pug/groups/group.ex
+54 −0

Click to load diff…

added lib/feed_pug/groups/group_feed.ex
+27 −0

Click to load diff…

added lib/feed_pug/groups/group_follow.ex
+27 −0

Click to load diff…

added lib/feed_pug/groups/not_owner_error.ex
+4 −0

Click to load diff…

added lib/feed_pug/mailer.ex
+3 −0

Click to load diff…

added lib/feed_pug/opml.ex
+86 −0

Click to load diff…

added lib/feed_pug/reactions.ex
+174 −0

Click to load diff…

added lib/feed_pug/reactions/item_reaction.ex
+22 −0

Click to load diff…

added lib/feed_pug/reactions/reaction.ex
+25 −0

Click to load diff…

added lib/feed_pug/release.ex
+41 −0

Click to load diff…

added lib/feed_pug/repo.ex
+5 −0

Click to load diff…

added lib/feed_pug/themes.ex
+28 −0

Click to load diff…

added lib/feed_pug/timelines.ex
+48 −0

Click to load diff…

added lib/feed_pug/timelines/slice.ex
+30 −0

Click to load diff…

added lib/feed_pug/workers/refresh_feed.ex
+26 −0

Click to load diff…

added lib/feed_pug/workers/schedule_feeds.ex
+19 −0

Click to load diff…

added lib/feed_pug_web.ex
+116 −0

Click to load diff…

added lib/feed_pug_web/components/core_components.ex
+498 −0

Click to load diff…

added lib/feed_pug_web/components/layouts.ex
+206 −0

Click to load diff…

added lib/feed_pug_web/components/layouts/root.html.heex
+42 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/follow_controller.ex
+52 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/group_controller.ex
+76 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/item_controller.ex
+37 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/profile_controller.ex
+8 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/shape.ex
+76 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/source_controller.ex
+25 −0

Click to load diff…

added lib/feed_pug_web/controllers/api/timeline_controller.ex
+100 −0

Click to load diff…

added lib/feed_pug_web/controllers/error_html.ex
+24 −0

Click to load diff…

added lib/feed_pug_web/controllers/error_json.ex
+21 −0

Click to load diff…

added lib/feed_pug_web/controllers/user_session_controller.ex
+67 −0

Click to load diff…

added lib/feed_pug_web/endpoint.ex
+55 −0

Click to load diff…

added lib/feed_pug_web/feed_helpers.ex
+101 −0

Click to load diff…

added lib/feed_pug_web/gettext.ex
+25 −0

Click to load diff…

added lib/feed_pug_web/live/devices_live.ex
+188 −0

Click to load diff…

added lib/feed_pug_web/live/discover_live.ex
+226 −0

Click to load diff…

added lib/feed_pug_web/live/groups_live.ex
+270 −0

Click to load diff…

added lib/feed_pug_web/live/newsfeed_live.ex
+625 −0

Click to load diff…

added lib/feed_pug_web/live/user_live/confirmation.ex
+94 −0

Click to load diff…

added lib/feed_pug_web/live/user_live/login.ex
+134 −0

Click to load diff…

added lib/feed_pug_web/live/user_live/registration.ex
+89 −0

Click to load diff…

added lib/feed_pug_web/live/user_live/settings.ex
+160 −0

Click to load diff…

added lib/feed_pug_web/plugs/api_auth.ex
+42 −0

Click to load diff…

added lib/feed_pug_web/router.ex
+107 −0

Click to load diff…

added lib/feed_pug_web/telemetry.ex
+93 −0

Click to load diff…

added lib/feed_pug_web/user_auth.ex
+287 −0

Click to load diff…

added mix.exs
+100 −0

Click to load diff…

added mix.lock
+54 −0

Click to load diff…

added priv/gettext/en/LC_MESSAGES/errors.po
+112 −0

Click to load diff…

added priv/gettext/errors.pot
+109 −0

Click to load diff…

added priv/repo/migrations/.formatter.exs
+4 −0

Click to load diff…

added priv/repo/migrations/20260618173401_create_users_auth_tables.exs
+30 −0

Click to load diff…

added priv/repo/migrations/20260618173502_add_oban_jobs.exs
+7 −0

Click to load diff…

added priv/repo/migrations/20260618173602_create_feeds.exs
+24 −0

Click to load diff…

added priv/repo/migrations/20260618173603_create_items.exs
+22 −0

Click to load diff…

added priv/repo/migrations/20260618173604_create_groups.exs
+38 −0

Click to load diff…

added priv/repo/migrations/20260618173605_create_group_feeds.exs
+17 −0

Click to load diff…

added priv/repo/migrations/20260618173606_create_group_follows.exs
+15 −0

Click to load diff…

added priv/repo/migrations/20260618173607_create_follow_exclusions.exs
+14 −0

Click to load diff…

added priv/repo/migrations/20260618180932_create_item_reads.exs
+15 −0

Click to load diff…

added priv/repo/migrations/20260618183326_create_reactions.exs
+31 −0

Click to load diff…

added priv/repo/migrations/20260618183517_add_item_dates.exs
+26 −0

Click to load diff…

added priv/repo/migrations/20260618192854_create_timeline_slices.exs
+20 −0

Click to load diff…

added priv/repo/migrations/20260618194026_create_api_tokens.exs
+18 −0

Click to load diff…

added priv/repo/migrations/20260618225601_add_item_search_vector.exs
+26 −0

Click to load diff…

added priv/repo/seeds.exs
+11 −0

Click to load diff…

modified ?
+0 −0

Click to load diff…

added priv/static/images/logo.svg
+6 −0

Click to load diff…

added priv/static/robots.txt
+5 −0

Click to load diff…

added rel/env.sh.eex
+35 −0

Click to load diff…

added rel/overlays/bin/migrate
+5 −0

Click to load diff…

added rel/overlays/bin/migrate.bat
+1 −0

Click to load diff…

added rel/overlays/bin/server
+5 −0

Click to load diff…

added rel/overlays/bin/server.bat
+2 −0

Click to load diff…

added test/feed_pug/accounts_test.exs
+397 −0

Click to load diff…

added test/feed_pug/api_tokens_test.exs
+40 −0

Click to load diff…

added test/feed_pug/feeds/fetcher_test.exs
+61 −0

Click to load diff…

added test/feed_pug/feeds_test.exs
+200 −0

Click to load diff…

added test/feed_pug/groups_test.exs
+263 −0

Click to load diff…

added test/feed_pug/opml_test.exs
+54 −0

Click to load diff…

added test/feed_pug/reactions_test.exs
+104 −0

Click to load diff…

added test/feed_pug/timelines_test.exs
+41 −0

Click to load diff…

added test/feed_pug_web/controllers/api/api_controller_test.exs
+158 −0

Click to load diff…

added test/feed_pug_web/controllers/error_html_test.exs
+14 −0

Click to load diff…

added test/feed_pug_web/controllers/error_json_test.exs
+12 −0

Click to load diff…

added test/feed_pug_web/controllers/user_session_controller_test.exs
+147 −0

Click to load diff…

added test/feed_pug_web/live/devices_live_test.exs
+39 −0

Click to load diff…

added test/feed_pug_web/live/discover_live_test.exs
+71 −0

Click to load diff…

added test/feed_pug_web/live/groups_live_test.exs
+71 −0

Click to load diff…

added test/feed_pug_web/live/newsfeed_live_test.exs
+223 −0

Click to load diff…

added test/feed_pug_web/live/user_live/confirmation_test.exs
+118 −0

Click to load diff…

added test/feed_pug_web/live/user_live/login_test.exs
+109 −0

Click to load diff…

added test/feed_pug_web/live/user_live/registration_test.exs
+82 −0

Click to load diff…

added test/feed_pug_web/live/user_live/settings_test.exs
+212 −0

Click to load diff…

added test/feed_pug_web/user_auth_test.exs
+390 −0

Click to load diff…

added test/support/conn_case.ex
+79 −0

Click to load diff…

added test/support/data_case.ex
+58 −0

Click to load diff…

added test/support/fixtures/accounts_fixtures.ex
+89 −0

Click to load diff…

added test/test_helper.exs
+2 −0

Click to load diff…

Parents: