Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9bbf7ad
Phase 1: scaffold Vite + React-TS base for Angular->React migration
devin-ai-integration[bot] Jun 18, 2026
59dbdb3
Port Angular shared models to React/TS types (Phase 2A)
devin-ai-integration[bot] Jun 18, 2026
fe056c2
Phase 2C: port shared Loader and ErrorMessage components to React
devin-ai-integration[bot] Jun 18, 2026
2497356
Phase 2B: port Angular SCSS to CSS variables, global CSS, and compone…
devin-ai-integration[bot] Jun 18, 2026
b45b8a6
Merge remote-tracking branches 'origin/devin/phase2a-types', 'origin/…
devin-ai-integration[bot] Jun 18, 2026
e6605ec
Phase 3E: port HackerNews API service to React hooks
devin-ai-integration[bot] Jun 18, 2026
34b6ec2
Phase 3D: port SettingsService to React SettingsContext
devin-ai-integration[bot] Jun 18, 2026
b7511f4
Initialize loading=true in API hooks to avoid false idle state on fir…
devin-ai-integration[bot] Jun 18, 2026
d6a50c6
Merge remote-tracking branches 'origin/devin/phase3d-settings-context…
devin-ai-integration[bot] Jun 18, 2026
26af009
Phase 4 prep: add optional content/text fields to Story type for item…
devin-ai-integration[bot] Jun 18, 2026
5161488
feat(user): port UserPage component to React
devin-ai-integration[bot] Jun 18, 2026
0e2c826
feat(layout): port Header, Footer, Settings to React
devin-ai-integration[bot] Jun 18, 2026
1936330
feat(item-details): port ItemDetailsPage + Comment to React
devin-ai-integration[bot] Jun 18, 2026
4d2fde8
feat(feed): port FeedPage + FeedItem to React
devin-ai-integration[bot] Jun 18, 2026
c7d1b84
Merge remote-tracking branches 'origin/devin/phase4f-layout', 'origin…
devin-ai-integration[bot] Jun 18, 2026
130a6ce
feat(pwa): configure vite-plugin-pwa, drop static manifest
devin-ai-integration[bot] Jun 18, 2026
003cecb
feat(app-shell): add App shell + routing (Phase 5J)
devin-ai-integration[bot] Jun 18, 2026
814d51b
Merge remote-tracking branches 'origin/devin/phase5j-appshell' and 'o…
devin-ai-integration[bot] Jun 18, 2026
65fd3d2
Phase 6: remove Angular artifacts, migrate config to Vite/React
devin-ai-integration[bot] Jun 18, 2026
2c66612
Fix AMOLED theme migration and visited-link color regressions
devin-ai-integration[bot] Jun 18, 2026
8212891
Fix pagination links losing accent color due to CSS-module class mang…
devin-ai-integration[bot] Jun 18, 2026
6dcfa5e
Address Devin Review: scroll-to-top on feedType change + React-ify CO…
devin-ai-integration[bot] Jun 18, 2026
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

# compiled output
/dist
/dev-dist
/tmp
/out-tsc
*.local
# Only exists if Bazel was run
/bazel-out

Expand Down
5 changes: 3 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
language: node_js
node_js:
- "6.9"
- "22"

branches:
only:
- master

before_script:
- npm install -g firebase-tools
- npm install -g @angular/cli

script:
- npm ci
- npm run lint
- npm run build

after_success:
Expand Down
29 changes: 13 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
# Contributing

Thank you for your interest in contributing! Please feel free to put up a PR for any issue or feature request.
Even if you have little to no experience with Angular, I'll be more than happy to help. :)
Even if you have little to no experience with React, I'll be more than happy to help. :)

## Setup

1. Fork the repo
2. Clone your fork
3. Make a branch for your feature or bug fix
4. If you don't have Angular CLI installed: `npm install -g angular-cli@latest`
5. `ng init`
6. Type `n` for each file to not overwrite any file changes
7. Run `npm start` and open `localhost:4200` in a browser
8. Work your magic
9. Run `npm run build` or `npm run static-serve` to kick off a production build and make sure nothing is broken
10. To test service worker changes:
* `npm run build` to kick off a fresh build and update the `dist/` directory
* `npm run precache` to generate the service worker file
* `npm run static-serve` to load the application along with the service worker asset using [live-server](https://github.com/tapio/live-server)
11. Add yourself to the [contributor's list](https://github.com/hdjirdeh/angular2-hn#contributors) in the README!
12. Commit your changes and reference the issue you're addressing (for example: `git commit -am 'Commit message. Closes #5'`)
13. Push your branch to your fork
14. Create a pull request from your branch on your fork to `master` on this repo
15. Have your branch get merged in! :star2:
4. Install dependencies: `npm install`
5. Run `npm run dev` and open the printed `localhost` URL (Vite dev server) in a browser
6. Work your magic
7. Run `npm run lint` and `npm run build` (`tsc -b && vite build`) to make sure nothing is broken
8. To test service worker / PWA changes:
* `npm run build` to produce a fresh build in the `dist/` directory (the service worker and web manifest are generated by [vite-plugin-pwa](https://vite-pwa-org.netlify.app/))
* `npm run preview` to serve the production build locally with the service worker active
9. Add yourself to the [contributor's list](https://github.com/hdjirdeh/angular2-hn#contributors) in the README!
10. Commit your changes and reference the issue you're addressing (for example: `git commit -am 'Commit message. Closes #5'`)
11. Push your branch to your fork
12. Create a pull request from your branch on your fork to `master` on this repo
13. Have your branch get merged in! :star2:

If you experience a problem at any point, please don't hesitate to file an issue or send me a message!
18 changes: 8 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<p align="center">
<a href="https://angular2-hn.firebaseapp.com">
<img alt="Angular 2 HN" title="Angular 2 HN" src="http://i.imgur.com/J303pQ4.png" width="150">
<img alt="React HN" title="React HN" src="http://i.imgur.com/J303pQ4.png" width="150">
</a>
</p>

<p align="center">
A progressive Hacker News client built with Angular
A progressive Hacker News client built with React
</p>

<p align="center">
Expand Down Expand Up @@ -47,7 +47,7 @@ This app uses [Workbox](https://workboxjs.org/) to generate a service worker as

## Manifest

With Chromium based browsers for Android (Chrome, Opera, etc...), Angular 2 HN includes a Web App Manifest that allows you to install to your homescreen.
With Chromium based browsers for Android (Chrome, Opera, etc...), React HN includes a Web App Manifest that allows you to install to your homescreen.

<p align="center">
<img src = "http://i.imgur.com/1RaaNkr.png">
Expand All @@ -73,16 +73,14 @@ Feel free to send me feedback on [twitter](https://twitter.com/hdjirdeh) or [fil

## Build process

Note: This project has been ejected (with AOT + production settings) in order to customize Webpack configurations.
This project is built with [Vite](https://vite.dev/) + React + TypeScript. The service worker and Web App Manifest are generated at build time by [`vite-plugin-pwa`](https://vite-pwa-org.netlify.app/) (Workbox).

- Clone or download the repo
- `npm install`
- `npm start` to run the application with webpack-dev-server or `npm build` to kick off a fresh build and update the output directory (`dist/`)

Note: Any Service Worker changes will not be reflected when you run the application locally in development. To test service worker changes:
- `npm build`
- `npm run precache` to generate the service worker file
- `npm run static-serve` to load the application along with the service worker asset using [live-server](https://github.com/tapio/live-server)
- `npm run dev` to run the application with the Vite dev server
- `npm run build` to type-check and produce a production build in the output directory (`dist/`)
- `npm run preview` to locally preview the production build (this is where the generated service worker is active, since it is not enabled in dev)
- `npm run lint` to lint the project

## Contributors

Expand Down
134 changes: 0 additions & 134 deletions angular.json

This file was deleted.

12 changes: 0 additions & 12 deletions browserslist

This file was deleted.

32 changes: 0 additions & 32 deletions e2e/protractor.conf.js

This file was deleted.

23 changes: 0 additions & 23 deletions e2e/src/app.e2e-spec.ts

This file was deleted.

11 changes: 0 additions & 11 deletions e2e/src/app.po.ts

This file was deleted.

13 changes: 0 additions & 13 deletions e2e/tsconfig.json

This file was deleted.

25 changes: 25 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores([
'dist',
'dev-dist',
]),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
globals: globals.browser,
},
},
])
Loading