Index: Gruntfile.js =================================================================== diff -u -r19f4978669d6a2d9b0a6ef867b23e001b0e12878 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 --- Gruntfile.js (.../Gruntfile.js) (revision 19f4978669d6a2d9b0a6ef867b23e001b0e12878) +++ Gruntfile.js (.../Gruntfile.js) (revision d9d0b06a382ed8e6db92c2a7add764e66d906b54) @@ -1,374 +1,385 @@ // AdminLTE Gruntfile -module.exports = function (grunt) { // jshint ignore:line - 'use strict'; +module.exports = function (grunt) { + // jshint ignore:line + "use strict"; - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - connect: { - server: { - options: { - //외부에서 개발 - //port: 80, - //내부에서 개발 - port: 9999, - hostname: '0.0.0.0', - middleware: function (connect, options, defaultMiddleware) { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + connect: { + server: { + options: { + //외부에서 개발 + port: 80, + //내부에서 개발 + // port: 9999, + hostname: "0.0.0.0", + middleware: function (connect, options, defaultMiddleware) { + defaultMiddleware.unshift(function (req, res, next) { + res.setHeader("Access-Control-Allow-Credentials", true); + res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); + res.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"); + if (req.method.toUpperCase() == "POST") req.method = "GET"; + return next(); + }); - defaultMiddleware.unshift(function (req, res, next) { - res.setHeader('Access-Control-Allow-Credentials', true); - res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); - res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); - if (req.method.toUpperCase() == 'POST') req.method = 'GET'; - return next(); - }); + var proxy = require("grunt-connect-proxy/lib/utils").proxyRequest; + return [ + // Include the proxy first + proxy + ].concat(defaultMiddleware); + } + }, + //로컬 개발 및 테스트용 + // proxies: [ + // { + // context: ['/auth-anon', '/auth-user', '/auth-admin', '/auth-check', '/sso', '/dwr', '/logout', '/login', '/oauth2', '/arms-check', + // '/swagger-ui.html', '/swagger-ui', '/webjars', '/swagger-resources', '/v2'], + // host: '127.0.0.1', + // port: 13131, + // https: false, + // changeOrigin: true + // } + // ] + // 외부에서 개발 + proxies: [ + { + context: [ + "/auth-anon", + "/auth-user", + "/auth-admin", + "/auth-check", + "/sso", + "/dwr", + "/logout", + "/login", + "/oauth2", + "/arms-check", + "/swagger-ui.html", + "/swagger-ui", + "/webjars", + "/swagger-resources", + "/v2" + ], + host: "www.313.co.kr", + port: 80, + https: false, + changeOrigin: true + } + ] + } + }, + watch: { + less: { + // Compiles less files upon saving + files: ["build/less/*.less"], + tasks: ["less:development", "less:production", "replace", "notify:less"] + }, + js: { + // Compile js files upon saving + files: ["build/js/*.js"], + tasks: ["js", "notify:js"] + }, + skins: { + // Compile any skin less files upon saving + files: ["build/less/skins/*.less"], + tasks: ["less:skins", "less:minifiedSkins", "notify:less"] + } + }, + // Notify end of tasks + notify: { + less: { + options: { + title: "AdminLTE", + message: "LESS finished running" + } + }, + js: { + options: { + title: "AdminLTE", + message: "JS bundler finished running" + } + } + }, + // 'less'-task configuration + // This task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css + less: { + // Development not compressed + development: { + files: { + // compilation.css : source.less + "dist/css/AdminLTE.css": "build/less/AdminLTE.less", + // AdminLTE without plugins + "dist/css/alt/AdminLTE-without-plugins.css": "build/less/AdminLTE-without-plugins.less", + // Separate plugins + "dist/css/alt/AdminLTE-select2.css": "build/less/select2.less", + "dist/css/alt/AdminLTE-fullcalendar.css": "build/less/fullcalendar.less", + "dist/css/alt/AdminLTE-bootstrap-social.css": "build/less/bootstrap-social.less" + } + }, + // Production compressed version + production: { + options: { + compress: true + }, + files: { + // compilation.css : source.less + "dist/css/AdminLTE.min.css": "build/less/AdminLTE.less", + // AdminLTE without plugins + "dist/css/alt/AdminLTE-without-plugins.min.css": "build/less/AdminLTE-without-plugins.less", + // Separate plugins + "dist/css/alt/AdminLTE-select2.min.css": "build/less/select2.less", + "dist/css/alt/AdminLTE-fullcalendar.min.css": "build/less/fullcalendar.less", + "dist/css/alt/AdminLTE-bootstrap-social.min.css": "build/less/bootstrap-social.less" + } + }, + // Non minified skin files + skins: { + files: { + "dist/css/skins/skin-blue.css": "build/less/skins/skin-blue.less", + "dist/css/skins/skin-black.css": "build/less/skins/skin-black.less", + "dist/css/skins/skin-yellow.css": "build/less/skins/skin-yellow.less", + "dist/css/skins/skin-green.css": "build/less/skins/skin-green.less", + "dist/css/skins/skin-red.css": "build/less/skins/skin-red.less", + "dist/css/skins/skin-purple.css": "build/less/skins/skin-purple.less", + "dist/css/skins/skin-blue-light.css": "build/less/skins/skin-blue-light.less", + "dist/css/skins/skin-black-light.css": "build/less/skins/skin-black-light.less", + "dist/css/skins/skin-yellow-light.css": "build/less/skins/skin-yellow-light.less", + "dist/css/skins/skin-green-light.css": "build/less/skins/skin-green-light.less", + "dist/css/skins/skin-red-light.css": "build/less/skins/skin-red-light.less", + "dist/css/skins/skin-purple-light.css": "build/less/skins/skin-purple-light.less", + "dist/css/skins/_all-skins.css": "build/less/skins/_all-skins.less" + } + }, + // Skins minified + minifiedSkins: { + options: { + compress: true + }, + files: { + "dist/css/skins/skin-blue.min.css": "build/less/skins/skin-blue.less", + "dist/css/skins/skin-black.min.css": "build/less/skins/skin-black.less", + "dist/css/skins/skin-yellow.min.css": "build/less/skins/skin-yellow.less", + "dist/css/skins/skin-green.min.css": "build/less/skins/skin-green.less", + "dist/css/skins/skin-red.min.css": "build/less/skins/skin-red.less", + "dist/css/skins/skin-purple.min.css": "build/less/skins/skin-purple.less", + "dist/css/skins/skin-blue-light.min.css": "build/less/skins/skin-blue-light.less", + "dist/css/skins/skin-black-light.min.css": "build/less/skins/skin-black-light.less", + "dist/css/skins/skin-yellow-light.min.css": "build/less/skins/skin-yellow-light.less", + "dist/css/skins/skin-green-light.min.css": "build/less/skins/skin-green-light.less", + "dist/css/skins/skin-red-light.min.css": "build/less/skins/skin-red-light.less", + "dist/css/skins/skin-purple-light.min.css": "build/less/skins/skin-purple-light.less", + "dist/css/skins/_all-skins.min.css": "build/less/skins/_all-skins.less" + } + } + }, - var proxy = require('grunt-connect-proxy/lib/utils').proxyRequest; - return [ - // Include the proxy first - proxy - ].concat(defaultMiddleware); - } - }, - //로컬 개발 및 테스트용 - proxies: [ - { - context: ['/auth-anon', '/auth-user', '/auth-admin', '/auth-check', '/sso', '/dwr', '/logout', '/login', '/oauth2', '/arms-check', - '/swagger-ui.html', '/swagger-ui', '/webjars', '/swagger-resources', '/v2'], - host: '127.0.0.1', - port: 13131, - https: false, - changeOrigin: true - } - ] - // 외부에서 개발 - // proxies: [ - // { - // context: ['/auth-anon', '/auth-user', '/auth-admin', '/auth-check', '/sso', '/dwr', '/logout', '/login', '/oauth2', '/arms-check', - // '/swagger-ui.html', '/swagger-ui', '/webjars', '/swagger-resources', '/v2'], - // host: 'www.313.co.kr', - // port: 80, - // https: false, - // changeOrigin: true - // } - // ] - }, - }, - watch: { - less: { - // Compiles less files upon saving - files: ['build/less/*.less'], - tasks: ['less:development', 'less:production', 'replace', 'notify:less'] - }, - js: { - // Compile js files upon saving - files: ['build/js/*.js'], - tasks: ['js', 'notify:js'] - }, - skins: { - // Compile any skin less files upon saving - files: ['build/less/skins/*.less'], - tasks: ['less:skins', 'less:minifiedSkins', 'notify:less'] - } - }, - // Notify end of tasks - notify: { - less: { - options: { - title: 'AdminLTE', - message: 'LESS finished running' - } - }, - js: { - options: { - title: 'AdminLTE', - message: 'JS bundler finished running' - } - } - }, - // 'less'-task configuration - // This task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css - less: { - // Development not compressed - development: { - files: { - // compilation.css : source.less - 'dist/css/AdminLTE.css': 'build/less/AdminLTE.less', - // AdminLTE without plugins - 'dist/css/alt/AdminLTE-without-plugins.css': 'build/less/AdminLTE-without-plugins.less', - // Separate plugins - 'dist/css/alt/AdminLTE-select2.css': 'build/less/select2.less', - 'dist/css/alt/AdminLTE-fullcalendar.css': 'build/less/fullcalendar.less', - 'dist/css/alt/AdminLTE-bootstrap-social.css': 'build/less/bootstrap-social.less' - } - }, - // Production compressed version - production: { - options: { - compress: true - }, - files: { - // compilation.css : source.less - 'dist/css/AdminLTE.min.css': 'build/less/AdminLTE.less', - // AdminLTE without plugins - 'dist/css/alt/AdminLTE-without-plugins.min.css': 'build/less/AdminLTE-without-plugins.less', - // Separate plugins - 'dist/css/alt/AdminLTE-select2.min.css': 'build/less/select2.less', - 'dist/css/alt/AdminLTE-fullcalendar.min.css': 'build/less/fullcalendar.less', - 'dist/css/alt/AdminLTE-bootstrap-social.min.css': 'build/less/bootstrap-social.less' - } - }, - // Non minified skin files - skins: { - files: { - 'dist/css/skins/skin-blue.css': 'build/less/skins/skin-blue.less', - 'dist/css/skins/skin-black.css': 'build/less/skins/skin-black.less', - 'dist/css/skins/skin-yellow.css': 'build/less/skins/skin-yellow.less', - 'dist/css/skins/skin-green.css': 'build/less/skins/skin-green.less', - 'dist/css/skins/skin-red.css': 'build/less/skins/skin-red.less', - 'dist/css/skins/skin-purple.css': 'build/less/skins/skin-purple.less', - 'dist/css/skins/skin-blue-light.css': 'build/less/skins/skin-blue-light.less', - 'dist/css/skins/skin-black-light.css': 'build/less/skins/skin-black-light.less', - 'dist/css/skins/skin-yellow-light.css': 'build/less/skins/skin-yellow-light.less', - 'dist/css/skins/skin-green-light.css': 'build/less/skins/skin-green-light.less', - 'dist/css/skins/skin-red-light.css': 'build/less/skins/skin-red-light.less', - 'dist/css/skins/skin-purple-light.css': 'build/less/skins/skin-purple-light.less', - 'dist/css/skins/_all-skins.css': 'build/less/skins/_all-skins.less' - } - }, - // Skins minified - minifiedSkins: { - options: { - compress: true - }, - files: { - 'dist/css/skins/skin-blue.min.css': 'build/less/skins/skin-blue.less', - 'dist/css/skins/skin-black.min.css': 'build/less/skins/skin-black.less', - 'dist/css/skins/skin-yellow.min.css': 'build/less/skins/skin-yellow.less', - 'dist/css/skins/skin-green.min.css': 'build/less/skins/skin-green.less', - 'dist/css/skins/skin-red.min.css': 'build/less/skins/skin-red.less', - 'dist/css/skins/skin-purple.min.css': 'build/less/skins/skin-purple.less', - 'dist/css/skins/skin-blue-light.min.css': 'build/less/skins/skin-blue-light.less', - 'dist/css/skins/skin-black-light.min.css': 'build/less/skins/skin-black-light.less', - 'dist/css/skins/skin-yellow-light.min.css': 'build/less/skins/skin-yellow-light.less', - 'dist/css/skins/skin-green-light.min.css': 'build/less/skins/skin-green-light.less', - 'dist/css/skins/skin-red-light.min.css': 'build/less/skins/skin-red-light.less', - 'dist/css/skins/skin-purple-light.min.css': 'build/less/skins/skin-purple-light.less', - 'dist/css/skins/_all-skins.min.css': 'build/less/skins/_all-skins.less' - } - } - }, + // Uglify task info. Compress the js files. + uglify: { + options: { + mangle: true, + output: { + comments: "some" + } + }, + production: { + files: { + "dist/js/adminlte.min.js": ["dist/js/adminlte.js"] + } + } + }, - // Uglify task info. Compress the js files. - uglify: { - options: { - mangle: true, - output: { - comments: 'some' - }, - }, - production: { - files: { - 'dist/js/adminlte.min.js': ['dist/js/adminlte.js'] - } - } - }, + // Concatenate JS Files + concat: { + options: { + separator: "\n\n", + banner: + "/*! AdminLTE app.js\n" + + "* ================\n" + + "* Main JS application file for AdminLTE v2. This file\n" + + "* should be included in all pages. It controls some layout\n" + + "* options and implements exclusive AdminLTE plugins.\n" + + "*\n" + + "* @author Colorlib\n" + + "* @support \n" + + "* @version <%= pkg.version %>\n" + + "* @repository <%= pkg.repository.url %>\n" + + "* @license MIT \n" + + "*/\n\n" + + "// Make sure jQuery has been loaded\n" + + "if (typeof jQuery === 'undefined') {\n" + + "throw new Error('AdminLTE requires jQuery')\n" + + "}\n\n" + }, + dist: { + src: [ + "build/js/BoxRefresh.js", + "build/js/BoxWidget.js", + "build/js/ControlSidebar.js", + "build/js/DirectChat.js", + "build/js/PushMenu.js", + "build/js/TodoList.js", + "build/js/Tree.js", + "build/js/Layout.js" + ], + dest: "dist/js/adminlte.js" + } + }, - // Concatenate JS Files - concat: { - options: { - separator: '\n\n', - banner: '/*! AdminLTE app.js\n' - + '* ================\n' - + '* Main JS application file for AdminLTE v2. This file\n' - + '* should be included in all pages. It controls some layout\n' - + '* options and implements exclusive AdminLTE plugins.\n' - + '*\n' - + '* @author Colorlib\n' - + '* @support \n' - + '* @version <%= pkg.version %>\n' - + '* @repository <%= pkg.repository.url %>\n' - + '* @license MIT \n' - + '*/\n\n' - + '// Make sure jQuery has been loaded\n' - + 'if (typeof jQuery === \'undefined\') {\n' - + 'throw new Error(\'AdminLTE requires jQuery\')\n' - + '}\n\n' - }, - dist: { - src: [ - 'build/js/BoxRefresh.js', - 'build/js/BoxWidget.js', - 'build/js/ControlSidebar.js', - 'build/js/DirectChat.js', - 'build/js/PushMenu.js', - 'build/js/TodoList.js', - 'build/js/Tree.js', - 'build/js/Layout.js', - ], - dest: 'dist/js/adminlte.js' - } - }, + // Replace image paths in AdminLTE without plugins + replace: { + withoutPlugins: { + src: ["dist/css/alt/AdminLTE-without-plugins.css"], + dest: "dist/css/alt/AdminLTE-without-plugins.css", + replacements: [ + { + from: "../img", + to: "../../img" + } + ] + }, + withoutPluginsMin: { + src: ["dist/css/alt/AdminLTE-without-plugins.min.css"], + dest: "dist/css/alt/AdminLTE-without-plugins.min.css", + replacements: [ + { + from: "../img", + to: "../../img" + } + ] + } + }, - // Replace image paths in AdminLTE without plugins - replace: { - withoutPlugins: { - src: ['dist/css/alt/AdminLTE-without-plugins.css'], - dest: 'dist/css/alt/AdminLTE-without-plugins.css', - replacements: [ - { - from: '../img', - to: '../../img' - } - ] - }, - withoutPluginsMin: { - src: ['dist/css/alt/AdminLTE-without-plugins.min.css'], - dest: 'dist/css/alt/AdminLTE-without-plugins.min.css', - replacements: [ - { - from: '../img', - to: '../../img' - } - ] - } - }, + // Build the documentation files + includes: { + build: { + src: ["*.html"], // Source files + dest: "documentation/", // Destination directory + flatten: true, + cwd: "documentation/build", + options: { + silent: true, + includePath: "documentation/build/include" + } + } + }, - // Build the documentation files - includes: { - build: { - src: ['*.html'], // Source files - dest: 'documentation/', // Destination directory - flatten: true, - cwd: 'documentation/build', - options: { - silent: true, - includePath: 'documentation/build/include' - } - } - }, + // Optimize images + image: { + dynamic: { + files: [ + { + expand: true, + cwd: "build/img/", + src: ["**/*.{png,jpg,gif,svg,jpeg}"], + dest: "dist/img/" + } + ] + } + }, - // Optimize images - image: { - dynamic: { - files: [ - { - expand: true, - cwd: 'build/img/', - src: ['**/*.{png,jpg,gif,svg,jpeg}'], - dest: 'dist/img/' - } - ] - } - }, + // Validate JS code + jshint: { + options: { + jshintrc: "build/js/.jshintrc" + }, + grunt: { + options: { + jshintrc: "build/grunt/.jshintrc" + }, + src: "Gruntfile.js" + }, + core: { + src: "build/js/*.js" + }, + demo: { + src: "dist/js/demo.js" + }, + pages: { + src: "dist/js/pages/*.js" + } + }, - // Validate JS code - jshint: { - options: { - jshintrc: 'build/js/.jshintrc' - }, - grunt: { - options: { - jshintrc: 'build/grunt/.jshintrc' - }, - src: 'Gruntfile.js' - }, - core: { - src: 'build/js/*.js' - }, - demo: { - src: 'dist/js/demo.js' - }, - pages: { - src: 'dist/js/pages/*.js' - } - }, + jscs: { + options: { + config: "build/js/.jscsrc" + }, + core: { + src: "<%= jshint.core.src %>" + }, + pages: { + src: "<%= jshint.pages.src %>" + } + }, - jscs: { - options: { - config: 'build/js/.jscsrc' - }, - core: { - src: '<%= jshint.core.src %>' - }, - pages: { - src: '<%= jshint.pages.src %>' - } - }, + // Validate CSS files + csslint: { + options: { + csslintrc: "build/less/.csslintrc" + }, + dist: ["dist/css/AdminLTE.css"] + }, - // Validate CSS files - csslint: { - options: { - csslintrc: 'build/less/.csslintrc' - }, - dist: [ - 'dist/css/AdminLTE.css' - ] - }, + // Validate Bootstrap HTML + bootlint: { + options: { + relaxerror: ["W005"] + }, + files: ["pages/**/*.html", "*.html"] + }, - // Validate Bootstrap HTML - bootlint: { - options: { - relaxerror: ['W005'] - }, - files: ['pages/**/*.html', '*.html'] - }, + // Delete images in build directory + // After compressing the images in the build/img dir, there is no need + // for them + clean: { + build: ["build/img/*"] + } + }); - // Delete images in build directory - // After compressing the images in the build/img dir, there is no need - // for them - clean: { - build: ['build/img/*'] - } - }); + // Load all grunt tasks - // Load all grunt tasks + // LESS Compiler + grunt.loadNpmTasks("grunt-contrib-less"); + // Watch File Changes + grunt.loadNpmTasks("grunt-contrib-watch"); + // Compress JS Files + grunt.loadNpmTasks("grunt-contrib-uglify"); + // Include Files Within HTML + grunt.loadNpmTasks("grunt-includes"); + // Optimize images + grunt.loadNpmTasks("grunt-image"); + // Validate JS code + grunt.loadNpmTasks("grunt-contrib-jshint"); + grunt.loadNpmTasks("grunt-jscs"); + // Delete not needed files + grunt.loadNpmTasks("grunt-contrib-clean"); + // Lint CSS + grunt.loadNpmTasks("grunt-contrib-csslint"); + // Lint Bootstrap + grunt.loadNpmTasks("grunt-bootlint"); + // Concatenate JS files + grunt.loadNpmTasks("grunt-contrib-concat"); + // Notify + grunt.loadNpmTasks("grunt-notify"); + // Replace + grunt.loadNpmTasks("grunt-text-replace"); - // LESS Compiler - grunt.loadNpmTasks('grunt-contrib-less'); - // Watch File Changes - grunt.loadNpmTasks('grunt-contrib-watch'); - // Compress JS Files - grunt.loadNpmTasks('grunt-contrib-uglify'); - // Include Files Within HTML - grunt.loadNpmTasks('grunt-includes'); - // Optimize images - grunt.loadNpmTasks('grunt-image'); - // Validate JS code - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-jscs'); - // Delete not needed files - grunt.loadNpmTasks('grunt-contrib-clean'); - // Lint CSS - grunt.loadNpmTasks('grunt-contrib-csslint'); - // Lint Bootstrap - grunt.loadNpmTasks('grunt-bootlint'); - // Concatenate JS files - grunt.loadNpmTasks('grunt-contrib-concat'); - // Notify - grunt.loadNpmTasks('grunt-notify'); - // Replace - grunt.loadNpmTasks('grunt-text-replace'); + // Linting task + grunt.registerTask("lint", ["jshint", "csslint", "bootlint"]); + // JS task + grunt.registerTask("js", ["concat", "uglify"]); + // CSS Task + grunt.registerTask("css", ["less:development", "less:production", "replace"]); - // Linting task - grunt.registerTask('lint', ['jshint', 'csslint', 'bootlint']); - // JS task - grunt.registerTask('js', ['concat', 'uglify']); - // CSS Task - grunt.registerTask('css', ['less:development', 'less:production', 'replace']); + // The default task (running 'grunt' in console) is 'watch' + grunt.registerTask("default", ["watch"]); - // The default task (running 'grunt' in console) is 'watch' - grunt.registerTask('default', ['watch']); - - //313devgrp - grunt.loadNpmTasks('grunt-contrib-connect'); - grunt.loadNpmTasks('grunt-connect-proxy'); - grunt.loadNpmTasks('configureProxies:server'); - grunt.loadNpmTasks('grunt-contrib-compass'); - //grunt.registerTask('server', ['connect:server:keepalive']); - grunt.registerTask('server', function (target) { - grunt.task.run([ - 'configureProxies:server', - 'connect:server:keepalive' - ]); - }); + //313devgrp + grunt.loadNpmTasks("grunt-contrib-connect"); + grunt.loadNpmTasks("grunt-connect-proxy"); + grunt.loadNpmTasks("configureProxies:server"); + grunt.loadNpmTasks("grunt-contrib-compass"); + //grunt.registerTask('server', ['connect:server:keepalive']); + grunt.registerTask("server", function (target) { + grunt.task.run(["configureProxies:server", "connect:server:keepalive"]); + }); }; Index: arms/img/landing/14815069-3d-사람-사람-확성기와-단어-아이디어-를-가진-사람.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/14815070-3d-사람-확성기와-사람-사람.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/15298063-3d-사람-노트북과-남자-사람.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/15457488-분말-코드를-연결-플러그를-연결하는-사람.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/17187676-3d-사람-사람-기어기구와-사람-체크리스트와-함께-클립-보드.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/17187692-3d-사람-사람-화살표의-쌍을-가진-사람입니다-검색의-개념.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/19986196-3d-사람들-회의-테이블-비즈니스-회의-및-계획의-남자-사람.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/24088523-3d-사람-사람-인간이-함께-퍼즐-조각을-넣어.jpg =================================================================== diff -u -r63b59a76c9d7fa4013b51b3ba6ef02890ca7c468 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 Binary files differ Index: arms/img/landing/arms-connect.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/assembly.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/checklist.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/developer.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/developer_e.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/developer_q.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/idea.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/okay.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/plan.jpg =================================================================== diff -u Binary files differ Index: arms/img/landing/progress.jpg =================================================================== diff -u Binary files differ Index: arms/index/assets/css/style.css =================================================================== diff -u -re6d39b69fa6d789c4bfdd9c3c33d0f47d352968c -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 --- arms/index/assets/css/style.css (.../style.css) (revision e6d39b69fa6d789c4bfdd9c3c33d0f47d352968c) +++ arms/index/assets/css/style.css (.../style.css) (revision d9d0b06a382ed8e6db92c2a7add764e66d906b54) @@ -268,132 +268,77 @@ } /*-------------------------------------------------------------- -# Hero Section +# landing --------------------------------------------------------------*/ -#hero { - width: 100%; - height: 100vh; - background: radial-gradient( - farthest-side ellipse at 10% 0, - rgba(40, 40, 40, 0.9), - rgba(90, 100, 130, 0.89), - rgba(60, 60, 60, 0.9) - ), - url("../../reference/light-blue/img/bgnoise_lg_dark.png"); - background: -webkit-radial-gradient( - 10% 0, - farthest-side ellipse, - rgba(40, 40, 40, 0.9), - rgba(90, 100, 130, 0.89), - rgba(60, 60, 60, 0.9) - ), - url("../../reference/light-blue/img/bgnoise_lg_dark.png"); - background: -moz-radial-gradient( - 10% 0, - farthest-side ellipse, - rgba(40, 40, 40, 0.9), - rgba(90, 100, 130, 0.89), - rgba(60, 60, 60, 0.9) - ), - url("../../reference/light-blue/img/bgnoise_lg_dark.png"); - background-size: cover; +.landing-container { position: relative; + color: #fff; } -@media (min-width: 992px) { - #hero { - padding-left: 160px; - } +.arms-logo { + position: fixed; + top: 25px; + left: 15px; + width: 175px; } -#hero:before { - content: ""; - position: absolute; - bottom: 0; - top: 0; - left: 0; - right: 0; +.arms-logo img { + width: 100%; } -#hero h1 { - margin: 0; - font-size: 64px; - font-weight: 700; - line-height: 56px; - color: #45505b; +.landing-container > section { + width: 100%; + height: 100vh; + padding: 60px 0; + overflow: hidden; } -#hero h1 img { - width: 400px; +.landing-container .home { + display: flex; + flex-direction: column; + justify-content: center; } -#hero p { - color: #45505b; - margin: 15px 0 0 0; - font-size: 26px; - font-family: "Poppins", sans-serif; +.home p { + margin-bottom: 20px !important; + text-align: center; + font-size: 16px; } -#hero p span { - color: #0563bb; - letter-spacing: 1px; +.preview-btn { + margin: 5px; + text-align: right; } -#hero .social-links { - margin-top: 30px; -} - -#hero .social-links a { - font-size: 24px; +.preview-btn a { display: inline-block; - color: #45505b; - line-height: 1; - margin-right: 20px; - transition: 0.3s; + padding: 8px 18px; + color: #fff; + font-size: 16.25px; + line-height: 1.33; + border: 2px solid #fff; } -#hero .social-links a:hover { - color: #0563bb; +.landing-container .row { + margin-top: 220px; } -@media (max-width: 992px) { - #hero { - text-align: center; - } - - #hero h1 { - font-size: 32px; - line-height: 36px; - } - - #hero p { - margin-top: 10px; - font-size: 20px; - line-height: 24px; - } +.home .row { + margin-top: 100px; } /*-------------------------------------------------------------- # Sections General --------------------------------------------------------------*/ -section { - padding: 60px 0; - overflow: hidden; -} - -.section-title { - text-align: center; - padding-bottom: 30px; -} - .section-title h2 { + text-align: center; font-size: 32px; font-weight: bold; text-transform: uppercase; margin-bottom: 20px; padding-bottom: 20px; position: relative; - color: #45505b; + color: #fff; } .section-title h2::before { @@ -419,683 +364,137 @@ } .section-title p { + text-align: center; margin-bottom: 0; } -/*-------------------------------------------------------------- -# About ---------------------------------------------------------------*/ -.about .content h3 { - font-weight: 700; - font-size: 26px; - color: #728394; +/* +lading common +*/ +.container .flex { + display: flex; + justify-content: center; + padding: 5px; } - -.about .content { - margin: 6vw auto; - padding: 0; - width: 33vw; -} - -.about .flow-wrap { - list-style: none; +.content-section { + width: 100%; + max-width: 425px; + aspect-ratio: 4 / 3; position: relative; - padding: 0; - margin: 0; - height: 33vw; - border-radius: 50%; -} - -.about .flow-item { - position: absolute; - width: 12vw; - height: 12vw; - border-radius: 50%; + border-radius: 20px; overflow: hidden; - background-color: #fff; - opacity: 0; - transition: opacity 300ms; } -.about .flow-item.on { - opacity: 1; -} - -.about .flow-item img { +.content-section img { + position: absolute; width: 100%; height: 100%; object-fit: fill; } -.about .flow-item:nth-child(1) { - left: calc(50% - 6vw); - top: -6vw; -} - -.about .flow-item:nth-child(2) { - right: -5vw; - top: 3vw; -} - -.about .flow-item:nth-child(3) { - right: -5vw; - top: calc(50% + 3vw); -} - -.about .flow-item:nth-child(4) { - left: calc(50% - 6vw); - top: calc(100% - 6vw); -} - -.about .flow-item:nth-child(5) { - left: -5vw; - top: calc(50% + 3vw); -} - -.about .flow-item:nth-child(6) { - left: -5vw; - top: 3vw; -} - -.about .circle-wrap { - position: absolute; - top: 0; - z-index: -1; -} - -.about .circle-chart { - height: 33vw; -} - -.circle-chart__circle { - animation: circle-chart-fill 2.4s reverse; - transform: rotate(-90deg); - transform-origin: center; - stroke: #427dd1; - animation-timing-function: cubic-bezier(0.78, 0.59, 0.19, 0.33); -} - -@keyframes circle-chart-fill { - 50% { - stroke: #55a8c7; - } - 100% { - stroke-dasharray: 0 100; - stroke: #69d4bd; - } -} - /*-------------------------------------------------------------- -# Facts ---------------------------------------------------------------*/ -.facts .count-box { - margin-top: 30px; - width: 100%; - position: relative; - text-align: center; - background: #fff; -} - -.facts .count-box img { - width: 100%; - object-fit: contain; -} - -.facts .count-box span { - font-size: 36px; - display: block; - font-weight: 600; - color: #011426; -} - -.facts .count-box p { - padding: 0; - margin: 0; - font-family: "Raleway", sans-serif; - font-size: 14px; -} - -/*-------------------------------------------------------------- -# Akills ---------------------------------------------------------------*/ -.skills .progress { - height: 60px; - display: block; - background: none; - border-radius: 0; -} - -.skills .progress .skill { - padding: 10px 0; - margin: 0; - text-transform: uppercase; - display: block; - font-weight: 600; - font-family: "Poppins", sans-serif; - color: #45505b; -} - -.skills .progress .skill .val { - float: right; - font-style: normal; -} - -.skills .progress-bar-wrap { - background: #f2f3f5; -} - -.skills .progress-bar { - width: 1px; - height: 10px; - transition: 0.9s; - background-color: #0563bb; -} - -/*-------------------------------------------------------------- # Resume --------------------------------------------------------------*/ -.resume .resume-title { - font-size: 26px; - font-weight: 700; - margin-top: 20px; - margin-bottom: 20px; - color: #45505b; +.resume.on .idea { + animation: fadeOut 3s forwards 3s; } -.resume .resume-item { - padding: 0 0 20px 20px; - margin-top: -2px; - border-left: 2px solid #0563bb; - position: relative; +.resume.on .okay { + opacity: 0; + animation: fadeIn 3s forwards 3s; } -.resume .resume-item h4 { - line-height: 18px; - font-size: 18px; - font-weight: 600; - text-transform: uppercase; - font-family: "Poppins", sans-serif; - color: #0563bb; - margin-bottom: 10px; +.resume.on .developer { + animation: fadeOut 3s forwards 3s; } -.resume .resume-item h5 { - font-size: 16px; - background: #f7f8f9; - padding: 5px 15px; - display: inline-block; - font-weight: 600; - margin-bottom: 10px; +.resume.on .assembly { + opacity: 0; + animation: fadeIn 3s forwards 3s; } - -.resume .resume-item ul { - padding-left: 20px; -} - -.resume .resume-item ul li { - padding-bottom: 10px; -} - -.resume .resume-item:last-child { - padding-bottom: 0; -} - -.resume .resume-item::before { - content: ""; - position: absolute; - width: 16px; - height: 16px; - border-radius: 50px; - left: -9px; - top: 0; - background: #fff; - border: 2px solid #0563bb; -} - /*-------------------------------------------------------------- # Portfolio --------------------------------------------------------------*/ -.portfolio .portfolio-item { - margin-bottom: 30px; +.portfolio.on .okay { + animation: fadeOut 3s forwards 3s; } -.portfolio #portfolio-flters { - padding: 0; - margin: 0 auto 25px auto; - list-style: none; - text-align: center; - background: #fff; - border-radius: 50px; - padding: 2px 15px; +.portfolio.on .progress { + opacity: 0; + animation: fadeIn 3s forwards 3s; } -.portfolio #portfolio-flters li { - cursor: pointer; - display: inline-block; - padding: 10px 15px; - font-size: 14px; - font-weight: 600; - line-height: 1; - text-transform: uppercase; - color: #272829; - margin-bottom: 5px; - transition: all 0.3s ease-in-out; +.portfolio.on .assembly { + animation: fadeOut 3s forwards 3s; } -.portfolio #portfolio-flters li:hover, -.portfolio #portfolio-flters li.filter-active { - color: #0563bb; -} - -.portfolio #portfolio-flters li:last-child { - margin-right: 0; -} - -.portfolio .portfolio-wrap { - transition: 0.3s; - position: relative; - overflow: hidden; - z-index: 1; - background: rgba(69, 80, 91, 0.8); -} - -.portfolio .portfolio-wrap::before { - content: ""; - background: rgba(255, 255, 255, 0.7); - position: absolute; - left: 30px; - right: 30px; - top: 30px; - bottom: 30px; - transition: all ease-in-out 0.3s; - z-index: 2; +.portfolio.on .checklist { opacity: 0; + animation: fadeIn 3s forwards 3s; } -.portfolio .portfolio-wrap .portfolio-info { - opacity: 0; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - text-align: center; - z-index: 3; - transition: all ease-in-out 0.3s; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } } -.portfolio .portfolio-wrap .portfolio-info::before { - display: block; - content: ""; - width: 48px; - height: 48px; - position: absolute; - top: 35px; - left: 35px; - border-top: 3px solid #d7dce1; - border-left: 3px solid #d7dce1; - transition: all 0.5s ease 0s; - z-index: 9994; +@keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } } -.portfolio .portfolio-wrap .portfolio-info::after { - display: block; - content: ""; - width: 48px; - height: 48px; - position: absolute; - bottom: 35px; - right: 35px; - border-bottom: 3px solid #d7dce1; - border-right: 3px solid #d7dce1; - transition: all 0.5s ease 0s; - z-index: 9994; -} - -.portfolio .portfolio-wrap .portfolio-info h4 { - font-size: 20px; - color: #45505b; - font-weight: 600; -} - -.portfolio .portfolio-wrap .portfolio-info p { - color: #45505b; - font-size: 14px; - text-transform: uppercase; - padding: 0; - margin: 0; -} - -.portfolio .portfolio-wrap .portfolio-links { - text-align: center; - z-index: 4; -} - -.portfolio .portfolio-wrap .portfolio-links a { - color: #45505b; - margin: 0 2px; - font-size: 28px; - display: inline-block; - transition: 0.3s; -} - -.portfolio .portfolio-wrap .portfolio-links a:hover { - color: #148af9; -} - -.portfolio .portfolio-wrap:hover::before { - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 1; -} - -.portfolio .portfolio-wrap:hover .portfolio-info { - opacity: 1; -} - -.portfolio .portfolio-wrap:hover .portfolio-info::before { - top: 15px; - left: 15px; -} - -.portfolio .portfolio-wrap:hover .portfolio-info::after { - bottom: 15px; - right: 15px; -} - /*-------------------------------------------------------------- -# Portfolio Details ---------------------------------------------------------------*/ -.portfolio-details { - padding-top: 40px; -} - -.portfolio-details .portfolio-details-slider img { - width: 100%; -} - -.portfolio-details .portfolio-details-slider .swiper-pagination { - margin-top: 20px; - position: relative; -} - -.portfolio-details .portfolio-details-slider .swiper-pagination .swiper-pagination-bullet { - width: 12px; - height: 12px; - background-color: #fff; - opacity: 1; - border: 1px solid #0563bb; -} - -.portfolio-details .portfolio-details-slider .swiper-pagination .swiper-pagination-bullet-active { - background-color: #0563bb; -} - -.portfolio-details .portfolio-info { - padding: 30px; - box-shadow: 0px 0 30px rgba(69, 80, 91, 0.08); -} - -.portfolio-details .portfolio-info h3 { - font-size: 22px; - font-weight: 700; - margin-bottom: 20px; - padding-bottom: 20px; - border-bottom: 1px solid #eee; -} - -.portfolio-details .portfolio-info ul { - list-style: none; - padding: 0; - font-size: 15px; -} - -.portfolio-details .portfolio-info ul li + li { - margin-top: 10px; -} - -.portfolio-details .portfolio-description { - padding-top: 30px; -} - -.portfolio-details .portfolio-description h2 { - font-size: 26px; - font-weight: 700; - margin-bottom: 20px; -} - -.portfolio-details .portfolio-description p { - padding: 0; -} - -/*-------------------------------------------------------------- # Services --------------------------------------------------------------*/ -.services .icon-box { - text-align: center; - padding: 70px 20px 80px 20px; - transition: all ease-in-out 0.3s; - background: #fff; - box-shadow: 0px 5px 90px 0px rgba(110, 123, 131, 0.05); +.services .section-title p { + font-size: 16px; } -.services .icon-box .icon { - margin: 0 auto; - width: 100px; - height: 100px; - display: flex; - align-items: center; - justify-content: center; - transition: ease-in-out 0.3s; - position: relative; +.services .features { + margin-top: 345px; } -.services .icon-box .icon i { - font-size: 36px; - transition: 0.5s; - position: relative; +.services .features:last-child { + margin-top: 70px; } -.services .icon-box .icon svg { - position: absolute; - top: 0; - left: 0; -} - -.services .icon-box .icon svg path { - transition: 0.5s; - fill: #f5f5f5; -} - -.services .icon-box h4 { - font-weight: 600; - margin: 10px 0 15px 0; - font-size: 22px; -} - -.services .icon-box h4 a { - color: #45505b; - transition: ease-in-out 0.3s; -} - -.services .icon-box p { - line-height: 24px; - font-size: 14px; - margin-bottom: 0; -} - -.services .icon-box:hover { - border-color: #fff; - box-shadow: 0px 0 35px 0 rgba(0, 0, 0, 0.08); -} - -.services .iconbox-blue i { - color: #47aeff; -} - -.services .iconbox-blue:hover .icon i { - color: #fff; -} - -.services .iconbox-blue:hover .icon path { - fill: #47aeff; -} - -.services .iconbox-orange i { - color: #ffa76e; -} - -.services .iconbox-orange:hover .icon i { - color: #fff; -} - -.services .iconbox-orange:hover .icon path { - fill: #ffa76e; -} - -.services .iconbox-pink i { - color: #e80368; -} - -.services .iconbox-pink:hover .icon i { - color: #fff; -} - -.services .iconbox-pink:hover .icon path { - fill: #e80368; -} - -.services .iconbox-yellow i { - color: #ffbb2c; -} - -.services .iconbox-yellow:hover .icon i { - color: #fff; -} - -.services .iconbox-yellow:hover .icon path { - fill: #ffbb2c; -} - -.services .iconbox-red i { - color: #ff5828; -} - -.services .iconbox-red:hover .icon i { - color: #fff; -} - -.services .iconbox-red:hover .icon path { - fill: #ff5828; -} - -.services .iconbox-teal i { - color: #11dbcf; -} - -.services .iconbox-teal:hover .icon i { - color: #fff; -} - -.services .iconbox-teal:hover .icon path { - fill: #11dbcf; -} - -/*-------------------------------------------------------------- -# Testimonials ---------------------------------------------------------------*/ -.testimonials .section-header { - margin-bottom: 40px; -} - -.testimonials .testimonials-carousel, -.testimonials .testimonials-slider { - overflow: hidden; -} - -.testimonials .testimonial-item { +.feature { + display: flex; + padding: 0 3vw; text-align: center; } -.testimonials .testimonial-item .testimonial-img { - width: 120px; - border-radius: 50%; - border: 4px solid #fff; - margin: 0 auto; -} - -.testimonials .testimonial-item h3 { - font-size: 20px; - font-weight: bold; - margin: 10px 0 5px 0; - color: #111; -} - -.testimonials .testimonial-item h4 { +.feature p { font-size: 14px; - color: #999; - margin: 0 0 15px 0; } -.testimonials .testimonial-item .quote-icon-left, -.testimonials .testimonial-item .quote-icon-right { - color: #90c8fc; - font-size: 26px; -} - -.testimonials .testimonial-item .quote-icon-left { +.feature .icon { display: inline-block; - left: -5px; - position: relative; + margin-right: 20px; + height: 60px; + width: 60px; + font-size: 40px; + line-height: 60px; + vertical-align: middle; + border-radius: 50%; } -.testimonials .testimonial-item .quote-icon-right { - display: inline-block; - right: -5px; - position: relative; - top: 10px; +.feature .icon > i { + color: #ffffff; } - -.testimonials .testimonial-item p { - font-style: italic; - margin: 0 auto 15px auto; -} - -.testimonials .swiper-pagination { - margin-top: 20px; - position: relative; -} - -.testimonials .swiper-pagination .swiper-pagination-bullet { - width: 12px; - height: 12px; - background-color: #fff; - opacity: 1; - border: 1px solid #0563bb; -} - -.testimonials .swiper-pagination .swiper-pagination-bullet-active { - background-color: #0563bb; -} - -@media (min-width: 992px) { - .testimonials .testimonial-item p { - width: 80%; - } -} - /*-------------------------------------------------------------- # Contact --------------------------------------------------------------*/ .contact .info { width: 100%; - background: #fff; } .contact .info i { @@ -1117,14 +516,12 @@ font-size: 22px; font-weight: 600; margin-bottom: 5px; - color: #45505b; } .contact .info p { padding: 0 0 0 60px; margin-bottom: 0; font-size: 14px; - color: #728394; } .contact .info .email, @@ -1141,9 +538,12 @@ .contact .php-email-form { width: 100%; - background: #fff; } +.contact .php-email-form .row { + margin-top: 0; +} + .contact .php-email-form .form-group { padding-bottom: 8px; } @@ -1249,7 +649,7 @@ } #footer p { - font-size: 15; + font-size: 15px; font-style: italic; padding: 0; margin: 0 0 40px 0; @@ -1287,3 +687,30 @@ #footer .credits { font-size: 13px; } + +@media (max-width: 992px) { + .landing-container { + height: auto; + } + + .arms-logo { + width: 100px; + margin: -55px 0 15px 5px; + } + + .landing-container .row, + .home .row { + margin-top: 15px; + } + + .services .features:last-child { + margin-top: 0px; + } + + .feature { + display: flex; + margin-top: 20px; + padding: 0 3vw; + text-align: center; + } +} Index: arms/index/assets/js/main.js =================================================================== diff -u -rad67a7ed8c6999e2cf07c7ca878ee6f8aa5f5e30 -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 --- arms/index/assets/js/main.js (.../main.js) (revision ad67a7ed8c6999e2cf07c7ca878ee6f8aa5f5e30) +++ arms/index/assets/js/main.js (.../main.js) (revision d9d0b06a382ed8e6db92c2a7add764e66d906b54) @@ -158,18 +158,6 @@ } /** - * about - * */ - const flowItems = document.querySelectorAll(".flow-item"); - if (flowItems) { - for (let i = 0; i < flowItems.length; i++) { - setTimeout(() => { - flowItems[i].classList.add("on"); - }, i * 300); - } - } - - /** * Skills animation */ let skilsContent = select(".skills-content"); @@ -271,6 +259,24 @@ } }); + const el = document.querySelectorAll(".section-container"); + + function scrollChecker(s) { + let index = 0; + for (let i = 0; i < el.length; i++) { + if (s < el[i].offsetTop) { + break; + } + + index = i; + } + + console.log("##############", s, index); + el[index].classList.add("on"); + } + + window.addEventListener("scroll", () => scrollChecker(window.scrollY)); + /** * Animation on scroll */ Index: arms/landing.html =================================================================== diff -u -re6d39b69fa6d789c4bfdd9c3c33d0f47d352968c -rd9d0b06a382ed8e6db92c2a7add764e66d906b54 --- arms/landing.html (.../landing.html) (revision e6d39b69fa6d789c4bfdd9c3c33d0f47d352968c) +++ arms/landing.html (.../landing.html) (revision d9d0b06a382ed8e6db92c2a7add764e66d906b54) @@ -81,7 +81,7 @@
  • Home @@ -133,305 +133,120 @@ - -
    - -
    - - -
    - +
    +

    + +

    + id="home" + class="home section-container">
    -
    -

    About

    -

    - Magnam dolores commodi suscipit. Necessitatibus eius consequatur ex aliquid fuga eum quidem. Sit sint - consectetur velit. Quisquam quos quisquam cupiditate. Et nemo qui impedit suscipit alias ea. Quia fugiat - sit in iste officiis commodi quidem hic quas. -

    -
    -
    -
    -
      -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    -
    - - - - -
    -
    -
    -
    -
    - +

    요구사항이 개발자에게 제대로 전달되지 않는중

    - -
    -
    -
    -

    Facts

    -

    - Magnam dolores commodi suscipit. Necessitatibus eius consequatur ex aliquid fuga eum quidem. Sit sint - consectetur velit. Quisquam quos quisquam cupiditate. Et nemo qui impedit suscipit alias ea. Quia fugiat - sit in iste officiis commodi quidem hic quas. -

    -
    - -
    -
    -
    +
    +
    + src="./img/landing/plan.jpg" + alt="plan" />
    -
    -
    +
    +
    + src="./img/landing/idea.jpg" + alt="idea" />
    -
    -
    +
    +
    + src="./img/landing/developer_q.jpg" + alt="developer" />
    -
    -
    - -
    -
    + +
    - + - +
    + id="about" + class="about section-container">
    -

    Skills

    +

    About

    Magnam dolores commodi suscipit. Necessitatibus eius consequatur ex aliquid fuga eum quidem. Sit sint consectetur velit. Quisquam quos quisquam cupiditate. Et nemo qui impedit suscipit alias ea. Quia fugiat sit in iste officiis commodi quidem hic quas.

    -
    -
    -
    - - HTML - 100% - -
    -
    -
    +
    +
    +
    + idea
    - -
    - - CSS - 90% - -
    -
    -
    +
    +
    +
    + arms-connect
    - -
    - - JavaScript - 75% - -
    -
    -
    -
    - -
    -
    - - PHP - 80% - -
    -
    -
    +
    +
    + developer
    - -
    - - WordPress/CMS - 90% - -
    -
    -
    -
    - -
    - - Photoshop - 55% - -
    -
    -
    -
    - +
    + class="resume section-container">
    @@ -445,80 +260,44 @@
    -
    -

    Sumary

    -
    -

    Brandon Johnson

    -

    - - Innovative and deadline-driven Graphic Designer with 3+ years of experience designing and developing - user-centered digital/print marketing material from initial concept to final, polished deliverable. - -

    -
      -
    • Portland par 127,Orlando, FL
    • -
    • (123) 456-7891
    • -
    • alice.barkley@example.com
    • -
    +
    +
    + idea + okay
    - -

    Education

    -
    -

    Master of Fine Arts & Graphic Design

    -
    2015 - 2016
    -

    Rochester Institute of Technology, Rochester, NY

    -

    - Qui deserunt veniam. Et sed aliquam labore tempore sed quisquam iusto autem sit. Ea vero voluptatum - qui ut dignissimos deleniti nerada porti sand markend -

    +
    +
    +
    + arms-connect
    -
    -

    Bachelor of Fine Arts & Graphic Design

    -
    2010 - 2014
    -

    Rochester Institute of Technology, Rochester, NY

    -

    - Quia nobis sequi est occaecati aut. Repudiandae et iusto quae reiciendis et quis Eius vel ratione eius - unde vitae rerum voluptates asperiores voluptatem Earum molestiae consequatur neque etlon sader mart - dila -

    -
    -
    -

    Professional Experience

    -
    -

    Senior graphic design specialist

    -
    2019 - Present
    -

    Experion, New York, NY

    -
      -
    • - Lead in the design, development, and implementation of the graphic, layout, and production - communication materials -
    • -
    • - Delegate tasks to the 7 members of the design team and provide counsel on all aspects of the - project. -
    • -
    • - Supervise the assessment of all graphic materials in order to ensure quality and accuracy of the - design -
    • -
    • Oversee the efficient use of production project budgets ranging from $2,000 - $25,000
    • -
    +
    +
    + developer + assembly
    -
    -

    Graphic design specialist

    -
    2017 - 2018
    -

    Stepping Stone Advertising, New York, NY

    -
      -
    • - Developed numerous marketing programs (logos, brochures,infographics, presentations, and - advertisements). -
    • -
    • Managed up to 5 projects or tasks at a given time while under pressure
    • -
    • Recommended and consulted with clients on the most appropriate graphic design
    • -
    • Created 4+ design presentations and proposals a month for clients and account managers
    • -
    -
    @@ -528,7 +307,7 @@
    + class="portfolio section-container">
    @@ -543,286 +322,44 @@
    -
      -
    • - All -
    • -
    • App
    • -
    • Card
    • -
    • Web
    • -
    -
    -
    - -
    -
    -
    + class="col-lg-4 flex justify-content-center" + data-aos="fade-up"> +
    -
    -

    App 1

    -

    App

    - -
    -
    -
    - -
    -
    + class="okay" + src="./img/landing/okay.jpg" + alt="okay" /> -
    -

    Web 3

    -

    Web

    - -
    + class="progress" + src="./img/landing/progress.jpg" + alt="progress" />
    - -
    -
    +
    +
    -
    -

    App 2

    -

    App

    - -
    + src="./img/landing/arms-connect.jpg" + alt="arms-connect" />
    - -
    -
    +
    +
    -
    -

    Card 2

    -

    Card

    - -
    -
    -
    - -
    -
    + class="assembly" + src="./img/landing/assembly.jpg" + alt="assembly" /> -
    -

    Web 2

    -

    Web

    - -
    + class="checklist" + src="./img/landing/checklist.jpg" + alt="checklist" />
    - -
    -
    - -
    -

    App 3

    -

    App

    - -
    -
    -
    - -
    -
    - -
    -

    Card 1

    -

    Card

    - -
    -
    -
    - -
    -
    - -
    -

    Card 3

    -

    Card

    - -
    -
    -
    - -
    -
    - -
    -

    Web 3

    -

    Web

    - -
    -
    -
    @@ -831,280 +368,132 @@
    + class="services section-container">
    -

    Services

    +

    + atlassian + RMS +

    - Magnam dolores commodi suscipit. Necessitatibus eius consequatur ex aliquid fuga eum quidem. Sit sint - consectetur velit. Quisquam quos quisquam cupiditate. Et nemo qui impedit suscipit alias ea. Quia fugiat - sit in iste officiis commodi quidem hic quas. + atlassian + Requirements Managment System + 은 전세계에서 유일한 Jira 를 기반한 요구사항 관리 시스템입니다.

    -
    -
    -
    -
    - - - - -
    -

    Lorem Ipsum

    -

    Voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi

    -
    -
    +
    +
    +
    +

    + + + +

    -
    -
    -
    - - - - +
    +

    Scope

    +

    제품(서비스)의 요구사항이 Jira의 END USER 까지 공유

    -

    Sed Perspiciatis

    -

    Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore

    -
    +
    +
    +
    +

    + + + +

    -
    -
    -
    - - - - -
    -

    Magni Dolores

    -

    Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia

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

    Nemo Enim

    -

    At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis

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

    Dele Cardo

    -

    Quis consequatur saepe eligendi voluptatem consequatur dolor consequuntur

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

    Divera Don

    -

    Modi nostrum vel laborum. Porro fugit error sit minus sapiente sit aspernatur

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

    Testimonials

    -
    - -
    -
    -
    -
    - -

    Saul Goodman

    -

    Ceo & Founder

    +
    +

    Cost

    - - Proin iaculis purus consequat sem cure digni ssim donec porttitora entum suscipit rhoncus. - Accusantium quam, ultricies eget id, aliquam eget nibh et. Maecen aliquam, risus at semper. - + 제품(서비스)의 Jira 분석 +
    + ➔ 정확한 Resource 통계

    -
    - +
    +
    +
    +
    +

    + + + +

    -
    -
    - -

    Sara Wilsson

    -

    Designer

    +
    +

    Time

    - - Export tempor illum tamen malis malis eram quae irure esse labore quem cillum quid cillum eram malis - quorum velit fore eram velit sunt aliqua noster fugiat irure amet legam anim culpa. - + 제품(서비스) Jira Project 맵핑 +
    + ➔ 실질적인 진척도 측정

    -
    - +
    +
    +
    +
    +
    +
    +

    + + + +

    -
    -
    - -

    Jena Karlis

    -

    Store Owner

    +
    +

    제품(서비스)

    - - Enim nisi quem export duis labore cillum quae magna enim sint quorum nulla quem veniam duis minim - tempor labore quem eram duis noster aute amet eram fore quis sint minim. - + aRMS는 제품과 서비스를 기준 +
    + ➔ 데이터를 구조화 합니다.

    -
    - - -
    -
    - -

    Matt Brandon

    -

    Freelancer

    +
    +
    +
    +
    +

    + + + +

    +
    +

    요구사항

    - - Fugiat enim eram quae cillum dolore dolor amet nulla culpa multos export minim fugiat minim velit - minim dolor enim duis veniam ipsum anim magna sunt elit fore quem dolore labore illum veniam. - + ARMS는 제품과 서비스를 기준 +
    + ➔ 요구사항을 관리합니다.

    -
    - +
    + +
    +
    +

    + + + +

    -
    -
    - -

    John Larson

    -

    Entrepreneur

    +
    +

    Test(QA)

    - - Quis quorum aliqua sint quem legam fore sunt eram irure aliqua veniam tempor noster veniam enim - culpa labore duis sunt culpa nulla illum cillum fugiat legam esse veniam culpa fore nisi cillum - quid. - + ARMS는 제품과 서비스를 기준 +
    + ➔ 요구사항의 테스트를 관리

    -
    - +
    -
    - +
    Contact -
    +
    @@ -1205,33 +594,7 @@

    Et aut eum quis fuga eos sunt ipsa nihil. Labore corporis magni eligendi fuga maxime saepe commodi placeat.

    - +