diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index ca26def..0000000 --- a/.drone.yml +++ /dev/null @@ -1,44 +0,0 @@ -kind: pipeline -type: docker -name: default - -steps: - - name: build - image: node:lts - commands: - - npm install - - npm run build - - name: deploy-dev - image: alpine - environment: - FTP_HOST: - from_secret: FTP_HOST - FTP_USERNAME: - from_secret: FTP_USERNAME - FTP_PASSWORD: - from_secret: FTP_PASSWORD - commands: - - which lftp || ( apk --update add lftp ) - - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ dev.samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST - when: - branch: - - develop - event: - - push - - name: deploy - image: alpine - environment: - FTP_HOST: - from_secret: FTP_HOST - FTP_USERNAME: - from_secret: FTP_USERNAME - FTP_PASSWORD: - from_secret: FTP_PASSWORD - commands: - - which lftp || ( apk --update add lftp ) - - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST - when: - branch: - - main - event: - - push diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000..9a0dad8 --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,47 @@ +const pluginRev = require("eleventy-plugin-rev"); +const eleventySass = require("eleventy-sass"); +const tinyHTML = require('@sardine/eleventy-plugin-tinyhtml'); +const site = require('./src/_data/site.js'); + +module.exports = function (eleventyConfig) { + eleventyConfig.addPlugin(pluginRev); + eleventyConfig.addPlugin(tinyHTML); + eleventyConfig.addPlugin(eleventySass, { + sass: { + loadPaths: ["node_modules"], + style: "compressed", + sourceMap: false, + }, + compileOptions: { + permalink: function (contents, inputPath) { + return (data) => { + return data.page.filePathStem.replace(/^\/scss\//, "/css/") + ".css"; + }; + } + }, + rev: true + }); + + eleventyConfig.setUseGitIgnore(false); + eleventyConfig.addPassthroughCopy({ + "src/img": "img", + "src/font": "font", + "src/favicon.*": "", + "node_modules/flag-icons/flags": "flags", + }); + + return { + // Pre-process *.html files with: (default: `liquid`) + htmlTemplateEngine: "njk", + // Opt-out of pre-processing global data JSON files: (default: `liquid`) + dataTemplateEngine: "njk", + + dir: { + input: "src", + // includes: "_includes", + // layouts: "_includes/layouts", + data: "_data", + output: `dist/${site.lang}/` + } + }; +}; diff --git a/.woodpecker.yml b/.woodpecker.yml index 0b58258..23310ef 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -4,6 +4,11 @@ pipeline: commands: - npm install - npm run build + build-de: + image: node:lts + commands: + - npm install + - npm run build:de deploy-dev: image: alpine secrets: @@ -12,7 +17,21 @@ pipeline: - FTP_PASSWORD commands: - which lftp || ( apk --update add lftp ) - - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ dev.samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST + - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/en/ dev.samuel-philipp.com/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST + when: + branch: + - develop + event: + - push + deploy-dev-de: + image: alpine + secrets: + - FTP_HOST + - FTP_USERNAME + - FTP_PASSWORD + commands: + - which lftp || ( apk --update add lftp ) + - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/de/ dev.samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST when: branch: - develop @@ -26,7 +45,21 @@ pipeline: - FTP_PASSWORD commands: - which lftp || ( apk --update add lftp ) - - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST + - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/en/ samuel-philipp.com/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST + when: + branch: + - main + event: + - push + deploy-de: + image: alpine + secrets: + - FTP_HOST + - FTP_USERNAME + - FTP_PASSWORD + commands: + - which lftp || ( apk --update add lftp ) + - lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/de/ samuel-philipp.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST when: branch: - main diff --git a/README.md b/README.md index 010923b..f9288e5 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,7 @@ # samuel-philipp.de -Website for samuel-philipp.de - -[GitHub](https://github.com/samuel-p/samuel-philipp.de) -[GitLab](https://gitlab.com/samuel-p/samuel-philipp.de) +Website for [samuel-philipp.de](https://samuel-philipp.de) and [samuel-philipp.com](https://samuel-philipp.com) ## Additional Header Parameters diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index a74af0d..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,254 +0,0 @@ -/** - * Settings - * Turn on/off build features - */ -var settings = { - clean: true, - scripts: true, - styles: true, - copy: true, - reload: true -}; - - -/** - * Paths to project folders - */ -var paths = { - input: 'src/', - output: 'dist/', - scripts: { - input: 'src/js/*.js', - output: 'dist/js/' - }, - styles: { - input: 'src/scss/*.scss', - output: 'dist/css/' - }, - copy: { - input: [ - 'src/*.html', -// 'src/.htaccess', - 'src/{img,font}/**/*', - 'node_modules/@fortawesome/fontawesome-free/*fonts/**/*' - ], - output: 'dist/' - }, - reload: './dist/' -}; - - -/** - * Template for banner to add to file headers - */ - -var banner = { - main: - '/*!' + - ' <%= package.name %> v<%= package.version %>' + - ' | (c) ' + new Date().getFullYear() + ' <%= package.author.name %>' + - ' | <%= package.license %> License' + - ' | <%= package.repository.url %>' + - ' */\n' -}; - - -/** - * Gulp Packages - */ -// General -var {src, dest, watch, series, parallel} = require('gulp'); -var del = require('del'); -var flatmap = require('gulp-flatmap'); -var lazypipe = require('lazypipe'); -var rename = require('gulp-rename'); -var header = require('gulp-header'); -var package = require('./package.json'); - -// Scripts -var concat = require('gulp-concat'); -var uglify = require('gulp-terser'); -var optimizejs = require('gulp-optimize-js'); - -// Styles -var sass = require('gulp-sass'); -var postcss = require('gulp-postcss'); -var prefix = require('autoprefixer'); -var minify = require('cssnano'); -var tildeImporter = require('node-sass-tilde-importer'); - -// BrowserSync -var browserSync = require('browser-sync'); - - -/** - * Gulp Tasks - */ -// Remove pre-existing content from output folders -var cleanDist = function (done) { - - // Make sure this feature is activated before running - if (!settings.clean) return done(); - - // Clean the dist folder - del.sync([ - paths.output - ]); - - // Signal completion - return done(); - -}; - -// Repeated JavaScript tasks -var jsTasks = lazypipe() - .pipe(header, banner.main, {package: package}) - .pipe(optimizejs) - .pipe(dest, paths.scripts.output) - .pipe(rename, {suffix: '.min'}) - .pipe(uglify) - .pipe(optimizejs) - .pipe(header, banner.main, {package: package}) - .pipe(dest, paths.scripts.output); - -// minify, and concatenate scripts -var buildScripts = function (done) { - // Make sure this feature is activated before running - if (!settings.scripts) return done(); - - // Run tasks on script files - return src(paths.scripts.input) - .pipe(flatmap(function(stream, file) { - - // If the file is a directory - if (file.isDirectory()) { - - // Setup a suffix variable - var suffix = ''; - - // If separate polyfill files enabled - if (settings.polyfills) { - - // Update the suffix - suffix = '.polyfills'; - - // Grab files that aren't polyfills, concatenate them, and process them - src([file.path + '/*.js', '!' + file.path + '/*' + paths.scripts.polyfills]) - .pipe(concat(file.relative + '.js')) - .pipe(jsTasks()); - - } - - // Grab all files and concatenate them - // If separate polyfills enabled, this will have .polyfills in the filename - src(file.path + '/*.js') - .pipe(concat(file.relative + suffix + '.js')) - .pipe(jsTasks()); - - return stream; - - } - - // Otherwise, process the file - return stream.pipe(jsTasks()); - - })); - -}; - -// Process, and minify Sass files -var buildStyles = function (done) { - // Make sure this feature is activated before running - if (!settings.styles) return done(); - - // Run tasks on all Sass files - return src(paths.styles.input) - .pipe(sass({ - importer: tildeImporter, - outputStyle: 'expanded', - sourceComments: true - })) - .pipe(postcss([ - prefix({ - cascade: true, - remove: true - }) - ])) - .pipe(header(banner.main, {package: package})) - .pipe(dest(paths.styles.output)) - .pipe(rename({suffix: '.min'})) - .pipe(postcss([ - minify({ - discardComments: { - removeAll: true - } - }) - ])) - .pipe(dest(paths.styles.output)); - -}; - -// Copy static files into output folder -var copyFiles = function (done) { - - // Make sure this feature is activated before running - if (!settings.copy) return done(); - - // Copy static files - return src(paths.copy.input) - .pipe(dest(paths.copy.output)); - -}; - -// Watch for changes to the src directory -var startServer = function (done) { - // Make sure this feature is activated before running - if (!settings.reload) return done(); - - // Initialize BrowserSync - browserSync.init({ - server: { - baseDir: paths.reload - } - }); - - // Signal completion - done(); - -}; - -// Reload the browser when files change -var reloadBrowser = function (done) { - if (!settings.reload) return done(); - browserSync.reload(); - done(); -}; - -// Watch for changes -var watchSource = function (done) { - watch(paths.input, series(exports.default, reloadBrowser)); - done(); -}; - - -/** - * Export Tasks - */ -// Default task -// gulp -exports.default = series( - cleanDist, - parallel( - buildScripts, - buildStyles, - copyFiles - ) -); - -// Watch and reload -// gulp watch -exports.watch = series( - exports.default, - startServer, - watchSource -); \ No newline at end of file diff --git a/package.json b/package.json index bcc2ceb..fe130b3 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,14 @@ { "name": "samuel-philipp.de", "version": "1.0.0", - "description": "website for samuel-philipp.de", + "description": "Website for samuel-philipp.de", "scripts": { - "start": "gulp watch", - "build": "gulp" + "minify-css": "uncss -n -H dist/en/ -o dist/en/css/main-*.css dist/en/index.html", + "minify-css:de": "uncss -n -H dist/de/ -o dist/de/css/main-*.css dist/de/index.html", + "start": "eleventy --serve --watch", + "start:de": "LANGUAGE=de eleventy --serve --watch", + "build": "eleventy && npm run minify-css", + "build:de": "LANGUAGE=de eleventy && npm run minify-css" }, "author": "samuel-p", "repository": { @@ -12,28 +16,26 @@ "url": "https://git.sp-codes.de/samuel-p/samuel-philipp.de" }, "optionalDependencies": { - "browser-sync": "^2.27.5" + "browser-sync": "^2.27.11" }, "devDependencies": { - "autoprefixer": "10.3.7", - "cssnano": "5.0.8", - "del": "6.0.0", - "gulp": "4.0.2", - "gulp-concat": "2.6.1", - "gulp-flatmap": "1.0.2", - "gulp-header": "2.0.9", - "gulp-optimize-js": "1.1.0", - "gulp-postcss": "9.0.1", - "gulp-rename": "2.0.0", - "gulp-sass": "4.1.1", - "gulp-terser": "2.1.0", - "lazypipe": "1.0.2", - "node-sass-tilde-importer": "^1.0.2", - "postcss": "^8.3.11" + "@11ty/eleventy": "^1.0.2", + "@11ty/eleventy-navigation": "^0.3.5", + "@node-minify/core": "^7.1.0", + "@node-minify/crass": "^7.1.0", + "@node-minify/html-minifier": "^7.1.0", + "@sardine/eleventy-plugin-tinyhtml": "^0.2.0", + "cpx": "^1.5.0", + "eleventy-plugin-rev": "^1.0.2", + "eleventy-sass": "^2.1.6", + "glob": "^8.0.3", + "minify": "^9.1.0", + "postcss": "^8.4.21", + "sass": "^1.57.1", + "uncss": "^0.17.3" }, "dependencies": { - "@fortawesome/fontawesome-free": "^5.15.4", - "bootstrap": "^4.6.0", - "jquery": "^3.6.0" + "bootstrap": "^5.2.3", + "flag-icons": "^6.6.6" } } diff --git a/src/_data/i18n/de.json b/src/_data/i18n/de.json new file mode 100644 index 0000000..f0ec888 --- /dev/null +++ b/src/_data/i18n/de.json @@ -0,0 +1,251 @@ +{ + "about": { + "title": "Über mich", + "overview": { + "name": "Name", + "mail": "E-Mail", + "site": "Webseite", + "url": "samuel-philipp.de", + "address": "Adresse" + }, + "hello": "Willkommen!", + "text": "Schön, dass du auf meine Webseite gefunden hast. Gerne stelle ich mich hier vor: Zunächst führe ich dich durch die wichtigsten Etappen meines Lebenslaufs. Anschließend präsentiere ich meine Projekte und Fähigkeiten, an und mit denen ich arbeite. Abschließend erhältst du einige Eindrücke meiner Hobbys und was ich sonst so tue. Schau dich gerne um. Bei Fragen, Anregungen oder Kritik freue ich mich auf deine Nachricht!" + }, + "resume": { + "title": "Mein Lebenslauf", + "work": { + "title": "Berufliche Laufbahn", + "positions": [ + { + "position": "Geschäftsführer (Nebentätigkeit)", + "company": "Ossrox UG (haftungsbeschränkt)", + "url": "https://ossrox.org", + "start": "März 2022", + "end": "heute", + "descriptions": [ + "Hosting von Open-Source-Tools ossrox.org", + "Strategische Gestaltung des Produktportfolios", + "Direkter Ansprechpartner im technischen Kundensupport", + "Planung und Realisierung individueller Kundenwünsche" + ], + "city": "Magdeburg", + "country": "" + }, + { + "position": "Software Engineer", + "company": "AV-TEST GmbH", + "url": "https://www.av-test.org", + "start": "Jan. 2018", + "end": "heute", + "descriptions": [ + "Threat Intelligence Plattform av-atlas.org", + "Automatisierte Datenschutzanalyse von Android Apps", + "Automatisierte Beschaffung von Malware für weitere Analysesysteme", + "Automatisierte Massenanalyse und Klassifizierung von Spam-Mails" + ], + "city": "Magdeburg", + "country": "" + }, + { + "position": "Software-Entwickler", + "company": "Fiducia & GAD IT AG", + "url": "https://www.fiduciagad.de", + "start": "Okt. 2017", + "end": "Dez. 2017", + "descriptions": [ + "Auditverfahren & Zugriffsverwaltung von produktiven Bankdaten", + "Berufliche Umorientierung wegen Umzug nach Magdeburg" + ], + "city": "Karlsruhe", + "country": "" + }, + { + "position": "Dualer Student Angewandte Informatik", + "company": "Fiducia & GAD IT AG", + "url": "https://www.fiduciagad.de", + "start": "Sept. 2014", + "end": "Sept. 2017", + "descriptions": [ + "Auditschnittstelle für Hadoop-Komponenten eines Fraud-Detection-Systems", + "Entwicklung verschiedener Software-Testverfahren & CI/CD-Abläufe", + "Implementierung diverser Backends & Frontends" + ], + "city": "Karlsruhe", + "country": "" + } + ] + }, + "education": { + "title": "Akademische Laufbahn", + "positions": [ + { + "course": "IT-Sicherheit und Forensik", + "degree": "Master of Engineering", + "institution": "Hochschule Wismar", + "start": "Sept. 2018", + "end": "Juni 2021", + "descriptions": [ + "Berufsbegleitendes Fernstudium" + ], + "city": "Wismar" + }, + { + "course": "Angewandte Informatik", + "degree": "Bachelor of Science", + "institution": "Duale Hochschule Baden-Württemberg", + "start": "Okt. 2014", + "end": "Sept. 2017", + "descriptions": [], + "city": "Karlsruhe" + }, + { + "course": "", + "degree": "Abitur", + "institution": "Albert-Einstein-Schule", + "start": "Sept. 2011", + "end": "Juni 2014", + "descriptions": [ + "Technisches Gymnasium, Profil Informationstechnik" + ], + "city": "Ettlingen" + } + ] + } + }, + "projects": { + "title": "Meine Projekte", + "list": [ + { + "icon": "sp-codes.svg", + "name": "sp-codes", + "description": "In meiner Freizeit stelle ich verschiedene quelloffene Dienste für die freie Nutzung bereit.", + "url": "https://sp-codes.de" + }, + { + "icon": "samuel.png", + "name": "Open Source", + "description": "Wenn ich Zeit finde, beteilige ich mich an Open Source Projekten oder schreibe gelegentlich den ein oder anderen Artikel dazu.", + "url": "" + }, + { + "icon": "op.png", + "name": "Ossrox", + "description": "Mit meiner Firma Ossrox biete ich Hosting von Open-Source-Tools an.", + "url": "https://ossrox.org" + } + ] + }, + "skills": { + "title": "Skills", + "languages": [ + { + "name": "Java", + "percent": 95 + }, + { + "name": "HTML", + "percent": 95 + }, + { + "name": "CSS", + "percent": 90 + }, + { + "name": "SQL", + "percent": 95 + }, + { + "name": "Bash", + "percent": 85 + }, + { + "name": "JavaScript", + "percent": 80 + }, + { + "name": "TypeScript", + "percent": 75 + }, + { + "name": "Python", + "percent": 50 + } + ], + "technologies": [ + { + "name": "Docker", + "percent": 95 + }, + { + "name": "Kubernetes", + "percent": 40 + }, + { + "name": "Git", + "percent": 90 + }, + { + "name": "Intellij IDEA", + "percent": 90 + }, + { + "name": "CI/CD", + "percent": 90 + }, + { + "name": "Spring Framework", + "percent": 85 + }, + { + "name": "Angular", + "percent": 80 + }, + { + "name": "Bootstrap", + "percent": 75 + }, + { + "name": "Elasticsearch", + "percent": 40 + }, + { + "name": "Node.js", + "percent": 80 + } + ] + }, + "interests": { + "title": "Interessen", + "list": [ + { + "image": "softwerke", + "name": "Softwerke Magdeburg e.V.", + "url": "https://softwerke.md/" + }, + { + "image": "magic", + "name": "Zauberkunst", + "url": "https://sp-magic.de" + }, + { + "image": "sports", + "name": "Kraftsport & Bouldern", + "url": "" + }, + { + "image": "photography", + "name": "Fotografie", + "url": "" + } + ] + }, + "contact": { + "title": "Kontakt" + }, + "footer": { + "imprint": "Impressum", + "privacy": "Datenschutz", + "code": "Code", + "stats": "Statistiken" + } +} diff --git a/src/_data/i18n/en.json b/src/_data/i18n/en.json new file mode 100644 index 0000000..4dde7a8 --- /dev/null +++ b/src/_data/i18n/en.json @@ -0,0 +1,251 @@ +{ + "about": { + "title": "About Me", + "overview": { + "name": "Name", + "mail": "E-Mail", + "site": "Website", + "url": "samuel-philipp.com", + "address": "Address" + }, + "hello": "Welcome!", + "text": "Nice that you found my website. I would like to introduce myself here: First, I'll take you through the most important stages of my resume. Then I will present my projects and skills I am working on and with. Finally, you will get some impressions of my hobbies and what else I like to do. Feel free to explore. If you have any questions, suggestions or criticism, do not hesitate to contact me!" + }, + "resume": { + "title": "My Resume", + "work": { + "title": "Work Experience", + "positions": [ + { + "position": "Managing Director (side job)", + "company": "Ossrox UG (haftungsbeschränkt)", + "url": "https://ossrox.org", + "start": "Mar. 2022", + "end": "now", + "descriptions": [ + "Hosting open source tools ossrox.org", + "Strategic design of product portfolio", + "Direct contact in technical customer support", + "Planning and realization of individual customer requirements" + ], + "city": "Magdeburg", + "country": "" + }, + { + "position": "Software Engineer", + "company": "AV-TEST GmbH", + "url": "https://www.av-test.org", + "start": "Jan. 2018", + "end": "now", + "descriptions": [ + "Threat Intelligence Platform av-atlas.org", + "Automated privacy analysis of Android apps", + "Automated collection of malware for further analysis systems", + "Automated mass analysis and classification of spam mails" + ], + "city": "Magdeburg", + "country": "" + }, + { + "position": "Software Engineer", + "company": "Fiducia & GAD IT AG", + "url": "https://www.fiduciagad.de", + "start": "Oct. 2017", + "end": "Dec. 2017", + "descriptions": [ + "Audit workflows & access management of productive bank data", + "Professional reorientation due to move to Magdeburg" + ], + "city": "Karlsruhe", + "country": "" + }, + { + "position": "Dual Student Applied Computer Science", + "company": "Fiducia & GAD IT AG", + "url": "https://www.fiduciagad.de", + "start": "Sept. 2014", + "end": "Sept. 2017", + "descriptions": [ + "Audit interface for Hadoop components of a fraud detection system", + "Development of various software test procedures & CI/CD workflows", + "Implementation of various backends & frontends" + ], + "city": "Karlsruhe", + "country": "" + } + ] + }, + "education": { + "title": "Education", + "positions": [ + { + "course": "IT Security and Forensics", + "degree": "Master of Engineering", + "institution": "Wismar University", + "start": "Sept. 2018", + "end": "June 2021", + "descriptions": [ + "Part-time distance studies" + ], + "city": "Wismar" + }, + { + "course": "Applied Computer Science", + "degree": "Bachelor of Science", + "institution": "Baden-Württemberg Cooperative State University", + "start": "Oct. 2014", + "end": "Sept. 2017", + "descriptions": [], + "city": "Karlsruhe" + }, + { + "course": "", + "degree": "Abitur (A-Level)", + "institution": "Albert-Einstein School", + "start": "Sept. 2011", + "end": "June 2014", + "descriptions": [ + "Technical high school, profile information technology" + ], + "city": "Ettlingen" + } + ] + } + }, + "projects": { + "title": "My Projects", + "list": [ + { + "icon": "sp-codes.svg", + "name": "sp-codes", + "description": "In my spare time I provide various open source services for free.", + "url": "https://sp-codes.de" + }, + { + "icon": "samuel.png", + "name": "Open Source", + "description": "When I have the time, I participate in open source projects or write an article or tutorial about it.", + "url": "" + }, + { + "icon": "op.png", + "name": "Ossrox", + "description": "With my company Ossrox I offer hosting of open source tools.", + "url": "https://ossrox.org" + } + ] + }, + "skills": { + "title": "Skills", + "languages": [ + { + "name": "Java", + "percent": 95 + }, + { + "name": "HTML", + "percent": 95 + }, + { + "name": "CSS", + "percent": 90 + }, + { + "name": "SQL", + "percent": 95 + }, + { + "name": "Bash", + "percent": 85 + }, + { + "name": "JavaScript", + "percent": 80 + }, + { + "name": "TypeScript", + "percent": 75 + }, + { + "name": "Python", + "percent": 50 + } + ], + "technologies": [ + { + "name": "Docker", + "percent": 95 + }, + { + "name": "Kubernetes", + "percent": 40 + }, + { + "name": "Git", + "percent": 90 + }, + { + "name": "Intellij IDEA", + "percent": 90 + }, + { + "name": "CI/CD", + "percent": 90 + }, + { + "name": "Spring Framework", + "percent": 85 + }, + { + "name": "Angular", + "percent": 80 + }, + { + "name": "Bootstrap", + "percent": 75 + }, + { + "name": "Elasticsearch", + "percent": 40 + }, + { + "name": "Node.js", + "percent": 80 + } + ] + }, + "interests": { + "title": "Interests", + "list": [ + { + "image": "softwerke", + "name": "Softwerke Magdeburg e.V.", + "url": "https://softwerke.md/" + }, + { + "image": "magic", + "name": "Magic", + "url": "https://sp-magic.de" + }, + { + "image": "sports", + "name": "Strength training & Bouldering", + "url": "" + }, + { + "image": "photography", + "name": "Photography", + "url": "" + } + ] + }, + "contact": { + "title": "Contact" + }, + "footer": { + "imprint": "Imprint", + "privacy": "Privacy", + "code": "Code", + "stats": "Stats" + } +} diff --git a/src/_data/site.js b/src/_data/site.js new file mode 100644 index 0000000..6832504 --- /dev/null +++ b/src/_data/site.js @@ -0,0 +1,8 @@ +const site = require("./site.json"); + +site.buildTime = new Date(); +site.lang = process.env.LANGUAGE || 'en'; +site.language = site.languages.find(l => l.code === site.lang); +site.strings = require(`./i18n/${site.lang}.json`); + +module.exports = site; diff --git a/src/_data/site.json b/src/_data/site.json new file mode 100644 index 0000000..1ca5f23 --- /dev/null +++ b/src/_data/site.json @@ -0,0 +1,20 @@ +{ + "title": "Samuel Philipp", + "subtitle": "Full-Stack Developer / SysAdmin / Magician", + "description": "Samuel Philipp - Full-Stack Developer / SysAdmin / Magician", + "author": "Samuel Philipp", + "languages": [ + { + "label": "English", + "code": "en", + "icon": "us", + "url": "https://samuel-philipp.com" + }, + { + "label": "Deutsch", + "code": "de", + "icon": "de", + "url": "https://samuel-philipp.de" + } + ] +} diff --git a/src/font/Pacifico-Regular.ttf b/src/font/Pacifico-Regular.ttf deleted file mode 100644 index 7172fe9..0000000 Binary files a/src/font/Pacifico-Regular.ttf and /dev/null differ diff --git a/src/font/SourceCodePro-Regular.ttf b/src/font/SourceCodePro-Regular.ttf deleted file mode 100644 index b2cff92..0000000 Binary files a/src/font/SourceCodePro-Regular.ttf and /dev/null differ diff --git a/src/font/icomoon.eot b/src/font/icomoon.eot new file mode 100644 index 0000000..1ea1a30 Binary files /dev/null and b/src/font/icomoon.eot differ diff --git a/src/font/icomoon.svg b/src/font/icomoon.svg new file mode 100644 index 0000000..c9411ec --- /dev/null +++ b/src/font/icomoon.svg @@ -0,0 +1,48 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/font/icomoon.ttf b/src/font/icomoon.ttf new file mode 100644 index 0000000..536a157 Binary files /dev/null and b/src/font/icomoon.ttf differ diff --git a/src/font/icomoon.woff b/src/font/icomoon.woff new file mode 100644 index 0000000..c53aefa Binary files /dev/null and b/src/font/icomoon.woff differ diff --git a/src/font/icomoon.woff2 b/src/font/icomoon.woff2 new file mode 100644 index 0000000..dd13ce3 Binary files /dev/null and b/src/font/icomoon.woff2 differ diff --git a/src/font/minotaur.ttf b/src/font/minotaur.ttf deleted file mode 100644 index aa4ccae..0000000 Binary files a/src/font/minotaur.ttf and /dev/null differ diff --git a/src/img/bg.jpg b/src/img/bg.jpg new file mode 100644 index 0000000..7903b40 Binary files /dev/null and b/src/img/bg.jpg differ diff --git a/src/img/bg.png b/src/img/bg.png deleted file mode 100644 index 8b1d392..0000000 Binary files a/src/img/bg.png and /dev/null differ diff --git a/src/img/dumbbell.jpg b/src/img/dumbbell.jpg new file mode 100644 index 0000000..2712b66 Binary files /dev/null and b/src/img/dumbbell.jpg differ diff --git a/src/img/magdeburg.jpg b/src/img/magdeburg.jpg new file mode 100644 index 0000000..1e925c0 Binary files /dev/null and b/src/img/magdeburg.jpg differ diff --git a/src/img/op.png b/src/img/op.png new file mode 100644 index 0000000..9efd32f Binary files /dev/null and b/src/img/op.png differ diff --git a/src/img/photography.jpg b/src/img/photography.jpg new file mode 100644 index 0000000..e654780 Binary files /dev/null and b/src/img/photography.jpg differ diff --git a/src/img/samuel-1024.jpg b/src/img/samuel-1024.jpg new file mode 100644 index 0000000..54f1acf Binary files /dev/null and b/src/img/samuel-1024.jpg differ diff --git a/src/img/samuel-philipp.jpg b/src/img/samuel-philipp.jpg deleted file mode 100644 index 2d45a35..0000000 Binary files a/src/img/samuel-philipp.jpg and /dev/null differ diff --git a/src/img/sp-codes.jpg b/src/img/sp-codes.jpg new file mode 100644 index 0000000..ff92a33 Binary files /dev/null and b/src/img/sp-codes.jpg differ diff --git a/src/img/sp-codes.png b/src/img/sp-codes.png deleted file mode 100644 index bd20b75..0000000 Binary files a/src/img/sp-codes.png and /dev/null differ diff --git a/src/img/sp-codes.svg b/src/img/sp-codes.svg new file mode 100644 index 0000000..10d6a99 --- /dev/null +++ b/src/img/sp-codes.svg @@ -0,0 +1 @@ + diff --git a/src/img/sp-magic.jpg b/src/img/sp-magic.jpg new file mode 100644 index 0000000..71ad2de Binary files /dev/null and b/src/img/sp-magic.jpg differ diff --git a/src/img/sp-magic.png b/src/img/sp-magic.png deleted file mode 100644 index 94d8606..0000000 Binary files a/src/img/sp-magic.png and /dev/null differ diff --git a/src/img/sp-magic_overlay.png b/src/img/sp-magic_overlay.png deleted file mode 100644 index 7fa95be..0000000 Binary files a/src/img/sp-magic_overlay.png and /dev/null differ diff --git a/src/index.html b/src/index.html index 184096d..a196182 100644 --- a/src/index.html +++ b/src/index.html @@ -1,7 +1,10 @@ +--- +title: {{site.title}} +--- - Samuel Philipp + {{site.title}} @@ -13,94 +16,295 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
-
- -
-
-
-
-

Software Engineer

-
-
-
-

Magician

-
-
- - - - - - - - - - - -
-