Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
8648960
fix(environment): update API base url
emp74ark Aug 6, 2025
3d90c1a
fix(environment): update API url to use public IP address
emp74ark Aug 6, 2025
e343992
fix(environment): update API url to use public IP address
emp74ark Aug 6, 2025
6564374
feat(subscriptions): add refresh subscription functionality
emp74ark Aug 7, 2025
7f5dffc
feat(subscriptions): add refresh all subscriptions functionality
emp74ark Aug 7, 2025
0f844ca
fix(home): reset page to 1 when toggling favorite filter
emp74ark Aug 7, 2025
e76cce7
style: improve formatting and add external class for consistency
emp74ark Aug 11, 2025
4e8eb37
feat: separate function blocks from content
emp74ark Aug 11, 2025
a06782c
feat: move pagination to the bottom
emp74ark Aug 11, 2025
e27fd42
style: update page layout
emp74ark Aug 11, 2025
82605b8
Merge pull request #7
emp74ark Aug 11, 2025
d63d20b
refactor: remove unused import
emp74ark Aug 11, 2025
3f41bee
feat: trim long urls
emp74ark Aug 11, 2025
5a5f743
refactor: remove unnecessary elements
emp74ark Aug 11, 2025
6a37e5f
feat(subscriptions, home): add global refresh functionality
emp74ark Aug 11, 2025
d8519dc
Merge pull request #8
emp74ark Aug 11, 2025
89b0aa6
chore: update favicon
emp74ark Aug 11, 2025
b515a56
fix: get new articles after subscription update
emp74ark Aug 11, 2025
7940f45
Merge pull request #9
emp74ark Aug 11, 2025
caa0796
feat(article): add full-text retrieval and loading state
emp74ark Aug 12, 2025
1a0d936
chore: skip tests for angular schematics
emp74ark Aug 13, 2025
e8db78c
feat: html sanitizer pipe
emp74ark Aug 13, 2025
f28a411
feat: use html sanitizer pipe
emp74ark Aug 13, 2025
92ee6b9
refactor(home): extract article list to reusable component
emp74ark Aug 13, 2025
956df4a
fix: use css for angular components
emp74ark Aug 13, 2025
d5920f1
feat: bookmarks page
emp74ark Aug 13, 2025
fb52df0
Merge pull request #13
emp74ark Aug 13, 2025
de6a20a
feat: scroll up after page change
emp74ark Aug 13, 2025
13b2cc4
Merge pull request #14
emp74ark Aug 13, 2025
593c595
feat: add theme support for dark and light mode
emp74ark Aug 13, 2025
5842dea
Merge pull request #16
emp74ark Aug 13, 2025
14854e0
fix(article): disable autoscroll on tags change
emp74ark Aug 14, 2025
3a6acce
refactor: common pagination component
emp74ark Aug 14, 2025
6c4eb5d
feat: close sidenav on click
emp74ark Aug 14, 2025
7246489
fix: incorrect route path
emp74ark Aug 18, 2025
c275a44
feat: store pagination data in the service
emp74ark Aug 18, 2025
83ef928
fix: missed arguments
emp74ark Aug 18, 2025
11d13d1
feat: don't request login if cookies already exist
emp74ark Aug 19, 2025
1654dde
fix: missed `highlighted` css class
emp74ark Aug 20, 2025
fa7662e
fix: hide sidenav on click for mobile only
emp74ark Aug 20, 2025
5f2a807
fix: remove unnecessary additional mat-toolbar
emp74ark Aug 20, 2025
a723af4
refactor: rename PaginationService to PageService
emp74ark Aug 20, 2025
1f532c7
refactor: move page display options to the PageService
emp74ark Aug 20, 2025
ea4b505
refactor: replace nginx with caddy
emp74ark Aug 23, 2025
ade484b
refactor: simplify api handling in Caddyfile
emp74ark Aug 24, 2025
7a27ffa
refactor: update api routing to use handle_path in Caddyfile
emp74ark Aug 24, 2025
6cc9d58
refactor: remove unused headers and replace handle_path with handle i…
emp74ark Aug 24, 2025
f9edf4e
refactor: remove unused encoders in Caddyfile
emp74ark Aug 24, 2025
77ffdd4
refactor: remove unused ENV variables in Dockerfile
emp74ark Aug 24, 2025
f6788a8
refactor: update api handling with uri strip_prefix in Caddyfile
emp74ark Aug 24, 2025
3f3a329
feat: add health status component with backend monitoring integration
emp74ark Aug 26, 2025
ea24cf9
refactor: trim login inputs before API call
emp74ark Aug 26, 2025
493375d
feat: add status page and navigation integration
emp74ark Aug 27, 2025
88448f6
refactor: unsued import
emp74ark Aug 28, 2025
5fded01
fix: prevent event propagation on external link click in article list
emp74ark Aug 28, 2025
fd40566
feat: bind paginator pageSize to PageService
emp74ark Aug 28, 2025
66a628a
feat: use rjxs instead of signals for pagination service
emp74ark Aug 28, 2025
ea8950c
refactor: remove unused tag-service references
emp74ark Aug 28, 2025
26523ad
chore: update default page size in PageService
emp74ark Aug 29, 2025
0f2dde3
fix: reset current page on successful update
emp74ark Aug 29, 2025
66eed62
feat: add icons to nav menu items
emp74ark Aug 29, 2025
675ce47
feat: implement scrollUp utility and integrate across components
emp74ark Aug 29, 2025
737fdc2
fix: reset current page on data refresh
emp74ark Aug 29, 2025
bb4fee1
feat: enhance auth-guard with error handling and cleanup logic
emp74ark Aug 30, 2025
4a577af
feat: add sorting for articles by date with toggle support
emp74ark Aug 31, 2025
17299d4
feat: add user page, login & signup forms, and logout functionality
emp74ark Sep 1, 2025
4c6217b
refactor: rename and relocate subscriptions-page files for consistency
emp74ark Sep 1, 2025
66368be
feat: add subscription-based filtering
emp74ark Sep 1, 2025
6ab6426
Merge pull request #20
emp74ark Sep 1, 2025
984d8ab
feat: add dynamic outlet switching for auth status
emp74ark Sep 2, 2025
79e72a4
feat: enhance auth page with app health status
emp74ark Sep 2, 2025
e130e5d
refactor: remove page-title component and associated files
emp74ark Sep 2, 2025
bf92e04
refactor: rename and update routes/pages for consistency and clarity
emp74ark Sep 2, 2025
5af846c
feat: add tag-based navigation and filtering options
emp74ark Sep 2, 2025
c77eed6
Merge pull request #21
emp74ark Sep 2, 2025
25a7403
feat: add active menu item highlighting in navigation
emp74ark Sep 3, 2025
428ff84
feat: improve the not-found page with the styled message and emoji
emp74ark Sep 3, 2025
7780fbb
feat: add view transitions with animations and router integration
emp74ark Sep 3, 2025
98f3136
feat: enhance forms with validation, loading state, and progress indi…
emp74ark Sep 3, 2025
73ecc08
fix: rename FeedSettings property `enable` to `enabled`
emp74ark Sep 3, 2025
e128f66
feat: add the method to update subscriptions in feed service
emp74ark Sep 3, 2025
f5b0612
feat: add subscription edit form with dialog integration and UI updates
emp74ark Sep 3, 2025
424689c
Merge pull request #22
emp74ark Sep 3, 2025
c3c0c07
fix: handle undefined feed settings in subscription edit form
emp74ark Sep 3, 2025
ac5afba
Merge pull request #24
emp74ark Sep 3, 2025
0378fc6
refactor: add readonly modifier, strict types, and OnPush change dete…
emp74ark Sep 3, 2025
1437e13
fix: remove unused keyframes and improve base styles
emp74ark Sep 4, 2025
25057fb
chore: upgrade Angular and dependencies to version 20.2.2
emp74ark Sep 4, 2025
53d463c
feat: CRUD for tags
emp74ark Sep 4, 2025
2d9c7c5
feat: add reusable confirmation dialog and integrate with delete actions
emp74ark Sep 4, 2025
f7454fc
fix: set subtitle to null on page initialization
emp74ark Sep 4, 2025
28d3390
feat: conditionally display icon for subtitle on handset devices
emp74ark Sep 4, 2025
3e025a3
refactor: add readonly and private modifiers to injected services and…
emp74ark Sep 4, 2025
95d3ce4
Merge pull request #25
emp74ark Sep 4, 2025
f8f77bd
refactor: rename subscriptions to feeds and update related components
emp74ark Sep 5, 2025
4220667
refactor: remove unused loadFullText option
emp74ark Sep 5, 2025
c74eb99
refactor: reformat code
emp74ark Sep 5, 2025
0e95a3e
refactor: remove unused router injection from ArticlesPage
emp74ark Sep 5, 2025
5a2cc21
Merge pull request #28
emp74ark Sep 5, 2025
0091bb7
docs: update README with new project overview and setup instructions
emp74ark Sep 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Caddyfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{$DOMAIN:feedz.buzz} {
@api path /api/*
handle @api {
uri strip_prefix /api
reverse_proxy http://rss-nest:3600
}

handle {
root * /app
try_files {path} /index.html
file_server
}

log {
level info
format console
}
}
30 changes: 9 additions & 21 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,14 @@
FROM node:22-slim
FROM node:22-slim as build
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN npm ci
COPY . .
RUN npm run build

COPY nginx.conf /etc/nginx/conf.d/default.conf
RUN apt-get update && \
apt-get install -y nginx && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN find . -mindepth 1 \
! -name 'dist' \
! -name 'entrypoint.sh' \
! -path './dist/*' \
-ignore_readdir_race \
-exec rm -rf {} + || true


RUN chmod +x ./entrypoint.sh

EXPOSE 8080

ENTRYPOINT ["/app/entrypoint.sh"]
FROM caddy:2-alpine
WORKDIR /app
COPY --from=build /app/dist/rss-angular/browser /app
COPY Caddyfile /etc/caddy
EXPOSE 80
EXPOSE 443/tcp
EXPOSE 443/udp
102 changes: 43 additions & 59 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,43 @@
# RssAngular

This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.0.2.

## Development server

To start a local development server, run:

```bash
ng serve
```

Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.

## Code scaffolding

Angular CLI includes powerful code scaffolding tools. To generate a new component, run:

```bash
ng generate component component-name
```

For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:

```bash
ng generate --help
```

## Building

To build the project run:

```bash
ng build
```

This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.

## Running unit tests

To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:

```bash
ng test
```

## Running end-to-end tests

For end-to-end (e2e) testing, run:

```bash
ng e2e
```

Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.

## Additional Resources

For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
# RSS reading app client

Client for the [RSS app](https://github.com/emp74ark/rss-nest) built with Angular 20 and Angular Material.

## Tech stack
- Angular 20
- Angular Material

## Prerequisites
- Node.js 20+ (Node 22 used in Dockerfile)
- npm 9+
- Angular CLI 20 globally installed (optional):
```bash
npm i -g @angular/cli@20
```
- Backend: [Repository](https://github.com/emp74ark/rss-nest)

## Getting started (local development)
1. Install dependencies:
```bash
npm install
```
2. Start the dev server:
```bash
npm start
# or
ng serve
```
3. Open http://localhost:4200


## Deploy

Using docker compose: [repository](https://github.com/emp74ark/rss-deploy)

## Project structure (high level)
- `src/app/pages` — feature pages: auth, articles, bookmarks, feeds, tags, user, status
- `src/app/components` — reusable components: article list, paginator, dialogs, forms
- `src/app/services` — API services (auth, feed, tag, user, page, title)
- `src/environments` — environment configs (`development` and `production`)

## License
ISC (see package.json)
39 changes: 34 additions & 5 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,32 @@
"projects": {
"rss-angular": {
"projectType": "application",
"schematics": {},
"schematics": {
"@schematics/angular:component": {
"skipTests": true
},
"@schematics/angular:class": {
"skipTests": true
},
"@schematics/angular:directive": {
"skipTests": true
},
"@schematics/angular:guard": {
"skipTests": true
},
"@schematics/angular:interceptor": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
"@schematics/angular:resolver": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
Expand All @@ -14,7 +39,9 @@
"builder": "@angular/build:application",
"options": {
"browser": "src/main.ts",
"polyfills": ["zone.js"],
"polyfills": [
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"assets": [
{
Expand All @@ -23,7 +50,6 @@
}
],
"styles": [
"@angular/material/prebuilt-themes/cyan-orange.css",
"src/styles.css"
]
},
Expand All @@ -32,7 +58,7 @@
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumWarning": "1000kB",
"maximumError": "1MB"
},
{
Expand Down Expand Up @@ -75,7 +101,10 @@
"test": {
"builder": "@angular/build:karma",
"options": {
"polyfills": ["zone.js", "zone.js/testing"],
"polyfills": [
"zone.js",
"zone.js/testing"
],
"tsConfig": "tsconfig.spec.json",
"assets": [
{
Expand Down
3 changes: 0 additions & 3 deletions entrypoint.sh

This file was deleted.

27 changes: 0 additions & 27 deletions nginx.conf

This file was deleted.

Loading