atbbs 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. atbbs-0.3.0/.claude/settings.local.json +7 -0
  2. atbbs-0.3.0/.github/workflows/docker.yml +29 -0
  3. atbbs-0.3.0/.github/workflows/pypi.yml +31 -0
  4. atbbs-0.3.0/.gitignore +20 -0
  5. atbbs-0.3.0/.python-version +1 -0
  6. atbbs-0.3.0/Dockerfile +35 -0
  7. atbbs-0.3.0/LICENSE.md +651 -0
  8. atbbs-0.3.0/PKG-INFO +108 -0
  9. atbbs-0.3.0/README.md +94 -0
  10. atbbs-0.3.0/assets/logo-1024.png +0 -0
  11. atbbs-0.3.0/assets/logo-512.png +0 -0
  12. atbbs-0.3.0/assets/logo.svg +7 -0
  13. atbbs-0.3.0/core/__init__.py +0 -0
  14. atbbs-0.3.0/core/auth/__init__.py +0 -0
  15. atbbs-0.3.0/core/auth/config.py +34 -0
  16. atbbs-0.3.0/core/auth/oauth.py +379 -0
  17. atbbs-0.3.0/core/auth/session.py +130 -0
  18. atbbs-0.3.0/core/constellation.py +75 -0
  19. atbbs-0.3.0/core/filters.py +9 -0
  20. atbbs-0.3.0/core/models.py +134 -0
  21. atbbs-0.3.0/core/records.py +366 -0
  22. atbbs-0.3.0/core/resolver.py +84 -0
  23. atbbs-0.3.0/core/slingshot.py +69 -0
  24. atbbs-0.3.0/core/util.py +20 -0
  25. atbbs-0.3.0/docker-compose.yml +13 -0
  26. atbbs-0.3.0/justfile +39 -0
  27. atbbs-0.3.0/lexicons/xyz.atboards.board.json +32 -0
  28. atbbs-0.3.0/lexicons/xyz.atboards.news.json +37 -0
  29. atbbs-0.3.0/lexicons/xyz.atboards.reply.json +62 -0
  30. atbbs-0.3.0/lexicons/xyz.atboards.site.json +62 -0
  31. atbbs-0.3.0/lexicons/xyz.atboards.thread.json +63 -0
  32. atbbs-0.3.0/main.py +6 -0
  33. atbbs-0.3.0/pyproject.toml +25 -0
  34. atbbs-0.3.0/tui/__init__.py +0 -0
  35. atbbs-0.3.0/tui/__main__.py +10 -0
  36. atbbs-0.3.0/tui/app.py +129 -0
  37. atbbs-0.3.0/tui/app.tcss +171 -0
  38. atbbs-0.3.0/tui/fetchers.py +4 -0
  39. atbbs-0.3.0/tui/local_server.py +39 -0
  40. atbbs-0.3.0/tui/screens/__init__.py +0 -0
  41. atbbs-0.3.0/tui/screens/activity.py +124 -0
  42. atbbs-0.3.0/tui/screens/board.py +106 -0
  43. atbbs-0.3.0/tui/screens/compose.py +180 -0
  44. atbbs-0.3.0/tui/screens/home.py +122 -0
  45. atbbs-0.3.0/tui/screens/login.py +162 -0
  46. atbbs-0.3.0/tui/screens/news.py +33 -0
  47. atbbs-0.3.0/tui/screens/site.py +81 -0
  48. atbbs-0.3.0/tui/screens/thread.py +241 -0
  49. atbbs-0.3.0/tui/util.py +3 -0
  50. atbbs-0.3.0/tui/widgets/__init__.py +0 -0
  51. atbbs-0.3.0/tui/widgets/breadcrumb.py +85 -0
  52. atbbs-0.3.0/tui/widgets/post.py +122 -0
  53. atbbs-0.3.0/uv.lock +778 -0
  54. atbbs-0.3.0/web/__init__.py +0 -0
  55. atbbs-0.3.0/web/app.py +59 -0
  56. atbbs-0.3.0/web/cli.py +15 -0
  57. atbbs-0.3.0/web/helpers.py +20 -0
  58. atbbs-0.3.0/web/routes.py +284 -0
  59. atbbs-0.3.0/web/routes_auth.py +218 -0
  60. atbbs-0.3.0/web/routes_sysop.py +403 -0
  61. atbbs-0.3.0/web/routes_write.py +144 -0
  62. atbbs-0.3.0/web/static/favicon.svg +7 -0
  63. atbbs-0.3.0/web/static/input.css +6 -0
  64. atbbs-0.3.0/web/static/style.css +2 -0
  65. atbbs-0.3.0/web/templates/account.html +137 -0
  66. atbbs-0.3.0/web/templates/base.html +43 -0
  67. atbbs-0.3.0/web/templates/board.html +116 -0
  68. atbbs-0.3.0/web/templates/error.html +8 -0
  69. atbbs-0.3.0/web/templates/home.html +65 -0
  70. atbbs-0.3.0/web/templates/login.html +18 -0
  71. atbbs-0.3.0/web/templates/site.html +78 -0
  72. atbbs-0.3.0/web/templates/sysop_create.html +60 -0
  73. atbbs-0.3.0/web/templates/sysop_edit.html +58 -0
  74. atbbs-0.3.0/web/templates/sysop_moderate.html +84 -0
  75. atbbs-0.3.0/web/templates/thread.html +175 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(grep -r atboards /Users/aly/Src/atboards --include=*.py --include=*.json --include=*.yml --include=*.yaml --include=*.toml --include=*.lock --include=*.md -l)"
5
+ ]
6
+ }
7
+ }
@@ -0,0 +1,29 @@
1
+ name: Build and Push Web Server
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ packages: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Log in to GitHub Container Registry
18
+ uses: docker/login-action@v3
19
+ with:
20
+ registry: ghcr.io
21
+ username: ${{ github.actor }}
22
+ password: ${{ secrets.GITHUB_TOKEN }}
23
+
24
+ - name: Build and push
25
+ uses: docker/build-push-action@v6
26
+ with:
27
+ context: .
28
+ push: true
29
+ tags: ghcr.io/${{ github.repository }}:latest
@@ -0,0 +1,31 @@
1
+ name: Build and Publish TUI
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - name: Install uv
15
+ uses: astral-sh/setup-uv@v4
16
+
17
+ - name: Install Tailwind CSS
18
+ run: |
19
+ curl -sL https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 -o tailwindcss
20
+ chmod +x tailwindcss
21
+
22
+ - name: Build CSS
23
+ run: ./tailwindcss -i web/static/input.css -o web/static/style.css --minify
24
+
25
+ - name: Build package
26
+ run: uv build
27
+
28
+ - name: Publish to PyPI
29
+ env:
30
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
31
+ run: uv publish
atbbs-0.3.0/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # Tailwind binary
13
+ tailwindcss
14
+
15
+ # Auth secrets and database
16
+ secrets.json
17
+ *.db
18
+
19
+ # Seed scripts
20
+ seeds/
@@ -0,0 +1 @@
1
+ 3.14
atbbs-0.3.0/Dockerfile ADDED
@@ -0,0 +1,35 @@
1
+ FROM python:3.14-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Install uv for fast dependency management
6
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
7
+
8
+ # Install Tailwind CSS standalone CLI
9
+ ADD https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 /usr/local/bin/tailwindcss
10
+ RUN chmod +x /usr/local/bin/tailwindcss
11
+
12
+ # Copy dependency files first (layer caching)
13
+ COPY pyproject.toml uv.lock README.md ./
14
+
15
+ # Install dependencies
16
+ RUN uv sync --frozen --no-dev
17
+
18
+ # Copy application code
19
+ COPY main.py ./
20
+ COPY core/ core/
21
+ COPY web/ web/
22
+ COPY lexicons/ lexicons/
23
+
24
+ # Build Tailwind CSS
25
+ RUN tailwindcss -i web/static/input.css -o web/static/style.css --minify
26
+
27
+ # Create data directory for secrets and database
28
+ RUN mkdir -p /data
29
+
30
+ ENV ATBBS_DATA_DIR=/data
31
+ ENV PYTHONUNBUFFERED=1
32
+
33
+ EXPOSE 8000
34
+
35
+ CMD ["uv", "run", "hypercorn", "main:app", "--bind", "0.0.0.0:8000", "--workers", "3"]