Contains code for my personal website jarombek.com. The website uses a MERN
stack (MongoDB, Express, React.js, Node.js). All the source code is found under the src
directory, which is further separated between client
and server
code.
There are a number of related repositories for my website:
- jarombek-com-infrastructure: Infrastructure as code for my website in AWS. Uses Terraform (and maybe in the future CloudFormation).
- jarombek-com-posts: the blog posts HTML code. First converted to JSON via the html-tokenizer and then placed in the jarombek-com-database repository. The JSON is stored in my MongoDB document database and converted to JSX in this project (the JSXConverter class).
- jarombek-com-sources: the source code that is discussed in my blog posts.
- html-tokenizer: converts HTML to JSON for storage in a document database of choice (in my case MongoDB).
- aws-lambda-emails: AWS lambda functions that send subscription emails to people who subscribe to my website.
- jarombek-com-database: Contains blog post data stored in MongoDB along with some automated scripts.
Make commands
# Install NVM & Proper Node.js Version
make prereqs
# Install Dependencies
make install
# Run the UI/API Locally
make run-ui
# Run the Database Locally
make run-database
Start the Development Server Locally
nvm use v20.11.0
# Install Dependencies
yarn
npm rebuild node-sass
# Run the webpack builds
export BUILD_ENV=local
yarn client:dev
yarn server:dev
# Start the development server
yarn server:deploy
Run Cypress E2E Tests Locally
As a prerequisite for running end-to-end tests, make sure the server is running.
nvm use v20.11.0
yarn cy:open
Run GitHub Actions Locally
# Install the act CLI
brew install act
# Run a specific GitHub Actions workflow
act -W '.github/workflows/e2e-tests.yaml'
Push images to DockerHub
docker image build -t jarombek-com:latest .
docker image tag jarombek-com:latest ajarombek/jarombek-com:latest
docker push ajarombek/jarombek-com:latest
docker image tag jarombek-com:latest ajarombek/jarombek-com:1.4.2
docker push ajarombek/jarombek-com:1.4.2
Filename | Description |
---|---|
.github |
GitHub Actions for CI/CD pipelines. |
cypress |
Cypress e2e test code. |
mocks |
Mocks for Jest unit testing. |
src |
Application source code for both client and server. |
test |
Jest test code for both client and server. |
.babelrc |
Configuration for Babel. |
.dockerignore |
Directories and files for Docker to ignore when building an image. |
.eslintrc.js |
Configuration for ESLint. |
.prettierignore |
File patterns for the Prettier code formatter to ignore. |
.prettierrc |
Prettier code formatter configuration. |
cypress.config.js |
Configuration for Cypress e2e tests. |
Dockerfile |
Dockerfile for an image that containerizes the application. |
jest.client-config.js |
Jest unit testing configuration for the client side code. |
jest.server-config.js |
Jest unit testing configuration for the server side code. |
LICENSE.md |
MIT License for the repository. |
Makefile |
Make commands for the application. |
package.json |
Entry point for the npm application. Contains dependency definitions. |
webpack.config.js |
Main webpack configuration file. |
webpack.parts.js |
Smaller webpack parts to combine with the main configuration. |
yarn.lock |
Where Yarn stores the versions of each dependency. |
v1.4.2 - AJ Poll Button
Release Date: March 2nd, 2024
- Add "Poll" button to the home page, navigating to the AJ Top 25 Poll website
v1.4.1 - Cypress Test Fixes
Release Date: January 21st, 2024
- Fix Cypress tests to work locally and in GitHub Actions
- Makefile commands for convenience
- Node.js 18 -> 20.11.0
- Fix for Dark Mode styles missing for blog post list items
v1.4.0 - Dark Mode
Release Date: September 30th, 2023
- Dark Mode for the website based on the user's system preferences
- Change text on the home page
v1.3.1 - GitHub Actions
Release Date: September 30th, 2023
- Create initial GitHub Actions for formatting and linting JavaScript
v1.3.0 - Webpack 5 and React 18 Release
Release Date: September 20th, 2023
- Update all third-party dependencies
- Convert React class components to functional components
- Update and simplify Webpack configuration
v1.1.19 - Google Analytics
Release Date: September 7th, 2021
Adding Google Analytics to the website to determine monthly page views. Currently, the only activity tracking available about the website is for Google Search clicks.
v1.1.5 - Non-CSS Grid Browser Support
Release Date: November 3rd, 2018
v1.1.1 - Resume Page
Release Date: September 16th, 2018
v1.1.0 - Home Page 2.0
Release Date: September 5th, 2018
This update restyled the home page into three components with pictures - resume, articles, and statistics.
v1.0.7 - Articles Text Search
Release Date: August 19th, 2018
v1.0.5 - Paginated Articles Page
Release Date: August 11th, 2018
v1.0.0 - MVP Release
Release Date: May 10th, 2018
This update marks the official release of my website.