My over-engineered online resume
JavaScript CSS HTML Makefile PHP
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
api
bin
dist
var
webapp-ssr
webapp
.babelrc
.gitignore
Makefile
README.md
package.json
prettier.config.js
yarn.lock

README.md

Rougemine.com - online resume

What could be more pleasant than totally over-engineering your online resume when you're a Web Developer in 2017 ?

The previous version was based on PHP, the version before on Node.js, CoffeeScript, Vagrant and gulp (2013! :-).
For this one I opted for a "full React" setup - including static files rendering. Sure, we have the great create-react-app to bootstrap a React project without pain, but I wanted to experiment things manually.

So, in order to generate only 2 HTML pages and 2 PDF files, I had the pleasure to use the following technologies:

  • An "api" tiny Node.js app, which dumps the content of the YAML files I copy-pasted from my previous CV versions into 2 JSON files (one for each language) in the var/ folder.
    It uses "*.mjs" files, enabled in the Node.js world thanks to @std/esm (the Node.js API for ES Modules is still experimental at the moment).
  • A React app, powered by a classic Webpack+Babel configuration. Because this CV has to be over-engineered by tradition, Redux is here of course.
    Webpack generates a JS file (the React app itself), CSS and img assets, and an almost empty "index.html" file as well - it only use these assets.
  • A "React Server Side Rendering" Node.js app, powered by its own Webpack configuration - we need Babel and its friends to be able to render stuff like ECMAscript Modules or JSX in Node.js.
    This app is responsible for the generation of complete "index.en.html" and "index.fr.html" files, based on the "index.html" generated by Webpack for the React app. These HTML files are fully populated with the HTML output of the React app, which then hydrates itself in the browser from this content.

Is it really over-engineered?

$ ll node_modules/ | wc -l
823

Yes it is!

Usage

# For a prod build with Google Analytics tracking:
$ make install
$ make build GA_TRACKING_ID=UA-XXXXXXXX-X

For development, see the NPM scripts defined in the root package.json file.

LICENSE

Excepted files in the "webapp/assets/img/icons/" folder, this app is licensed under the MIT license.