├── .gitignore
├── README.md
├── calculator
├── README.md
├── calculator-app
│ ├── .browserslistrc
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ └── index.html
│ └── src
│ │ ├── App.vue
│ │ ├── assets
│ │ └── logo.png
│ │ ├── components
│ │ └── Calculator.vue
│ │ └── main.js
└── calculator.png
├── drum-machine
├── README.md
├── drum-app
│ ├── .browserslistrc
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ └── index.html
│ ├── src
│ │ ├── App.vue
│ │ ├── assets
│ │ │ └── logo.png
│ │ ├── clips.js
│ │ └── main.js
│ └── vue.config.js
├── mockups
│ └── drum_machine.png
└── sounds
│ ├── alarm.aiff
│ ├── baseball_glove.aiff
│ ├── basketball.aiff
│ ├── clown_horn.aiff
│ ├── crash.aiff
│ ├── crash_kick.aiff
│ ├── crash_snare.aiff
│ ├── crash_symbol.aiff
│ ├── cymbal_kick.aiff
│ ├── deflate.aiff
│ ├── door_close.aiff
│ ├── drill_gear.aiff
│ ├── drum_roll.aiff
│ ├── glass_crash.aiff
│ ├── hammer_cement.aiff
│ ├── hand_clap.aiff
│ ├── tin_drum.aiff
│ └── tympani_bing.aiff
├── markdown-previewer
├── README.md
├── markdown-previewer
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ └── index.html
│ ├── src
│ │ ├── App.vue
│ │ ├── assets
│ │ │ └── logo.png
│ │ ├── components
│ │ │ └── HelloWorld.vue
│ │ └── main.js
│ └── vue.config.js
└── mockups
│ └── markdown_previewer.png
├── pomodoro-clock
├── README.md
├── mockups
│ └── pomodoro_clock.png
└── pomodoro-app
│ ├── .browserslistrc
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ ├── favicon.ico
│ └── index.html
│ ├── src
│ ├── App.vue
│ ├── assets
│ │ ├── logo.png
│ │ └── logo.svg
│ ├── components
│ │ ├── Pomodoro.vue
│ │ └── SettingsDialog.vue
│ ├── main.js
│ └── plugins
│ │ └── vuetify.js
│ └── vue.config.js
└── quote-machine
├── README.md
├── image
├── pen-fancy-solid.svg
├── pointer.png
├── quote-machine.png
├── quote_paper.png
├── sad.png
├── screenshot.png
└── wave.svg
├── index.html
├── script
├── main.js
└── quotes.js
└── style
└── main.css
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.toptal.com/developers/gitignore/api/vuejs,macos,vim
2 | # Edit at https://www.toptal.com/developers/gitignore?templates=vuejs,macos,vim
3 |
4 | ### macOS ###
5 | # General
6 | .DS_Store
7 | .AppleDouble
8 | .LSOverride
9 |
10 | # Icon must end with two \r
11 | Icon
12 |
13 | # Thumbnails
14 | ._*
15 |
16 | # Files that might appear in the root of a volume
17 | .DocumentRevisions-V100
18 | .fseventsd
19 | .Spotlight-V100
20 | .TemporaryItems
21 | .Trashes
22 | .VolumeIcon.icns
23 | .com.apple.timemachine.donotpresent
24 |
25 | # Directories potentially created on remote AFP share
26 | .AppleDB
27 | .AppleDesktop
28 | Network Trash Folder
29 | Temporary Items
30 | .apdisk
31 |
32 | ### Vim ###
33 | # Swap
34 | [._]*.s[a-v][a-z]
35 | !*.svg # comment out if you don't need vector files
36 | [._]*.sw[a-p]
37 | [._]s[a-rt-v][a-z]
38 | [._]ss[a-gi-z]
39 | [._]sw[a-p]
40 |
41 | # Session
42 | Session.vim
43 | Sessionx.vim
44 |
45 | # Temporary
46 | .netrwhist
47 | *~
48 | # Auto-generated tag files
49 | tags
50 | # Persistent undo
51 | [._]*.un~
52 |
53 | ### Vuejs ###
54 | # Recommended template: Node.gitignore
55 |
56 | node_modules/
57 | dist/
58 | npm-debug.log
59 | yarn-error.log
60 |
61 | # End of https://www.toptal.com/developers/gitignore/api/vuejs,macos,vim
62 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Freecodecamp Projects Vue
2 |
3 | Building all the freeCodeCamp projects in Vue.js.
4 |
5 | ## Projects
6 |
7 | * [Quote Machine](quote-machine/README.md)
8 | * [Markdown Previewer](markdown-previewer/README.md)
9 | * [Drum Machine](drum-machine/README.md)
10 | * [Calculator](calculator/README.md)
11 | * [Pomodoro Clock](pomodoro-clock/README.md)
12 |
13 |
--------------------------------------------------------------------------------
/calculator/README.md:
--------------------------------------------------------------------------------
1 | # Calculator
2 |
3 | freeCodeCamp calculator project built with Vue.js.
4 |
5 | ## Tech Stack
6 |
7 | * Vue.js
8 | * [Mathjs](https://github.com/josdejong/mathjs)
9 | * Bootstrap Vue
10 |
11 | ## Mockups
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/calculator/calculator-app/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/calculator/calculator-app/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/calculator/calculator-app/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/calculator/calculator-app/README.md:
--------------------------------------------------------------------------------
1 | # calculator-app
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/calculator/calculator-app/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/calculator/calculator-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "calculator-app",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "bootstrap": "4.5.0",
12 | "bootstrap-vue": "2.15.0",
13 | "core-js": "^3.6.5",
14 | "mathjs": "7.0.2",
15 | "vue": "2.6.11"
16 | },
17 | "devDependencies": {
18 | "@vue/cli-plugin-babel": "~4.4.0",
19 | "@vue/cli-plugin-eslint": "~4.4.0",
20 | "@vue/cli-service": "~4.4.0",
21 | "babel-eslint": "^10.1.0",
22 | "eslint": "^6.7.2",
23 | "eslint-plugin-vue": "^6.2.2",
24 | "sass": "^1.26.5",
25 | "sass-loader": "^8.0.2",
26 | "vue-template-compiler": "^2.6.11"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/calculator/calculator-app/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/calculator/calculator-app/public/favicon.ico
--------------------------------------------------------------------------------
/calculator/calculator-app/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/calculator/calculator-app/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
23 |
--------------------------------------------------------------------------------
/calculator/calculator-app/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/calculator/calculator-app/src/assets/logo.png
--------------------------------------------------------------------------------
/calculator/calculator-app/src/components/Calculator.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ secondOperand || firstOperand || 0 }}
5 |
6 |
7 |
8 |
9 |
10 | C
11 |
12 |
13 |
14 |
15 |
16 | 1
17 | 2
18 | 3
19 |
24 | +
25 |
26 |
27 |
28 |
29 | 4
30 | 5
31 | 6
32 |
37 | -
38 |
39 |
40 |
41 |
42 | 7
43 | 8
44 | 9
45 |
50 | x
51 |
52 |
53 |
54 |
55 | 0
56 | .
57 | =
58 |
63 | /
64 |
65 |
66 |
67 |
68 |
69 |
70 |
113 |
114 |
154 |
--------------------------------------------------------------------------------
/calculator/calculator-app/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
4 |
5 | import 'bootstrap/dist/css/bootstrap.css'
6 | import 'bootstrap-vue/dist/bootstrap-vue.css'
7 |
8 | Vue.use(BootstrapVue)
9 | Vue.use(IconsPlugin)
10 |
11 | Vue.config.productionTip = false
12 |
13 | new Vue({
14 | render: h => h(App),
15 | }).$mount('#app')
16 |
--------------------------------------------------------------------------------
/calculator/calculator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/calculator/calculator.png
--------------------------------------------------------------------------------
/drum-machine/README.md:
--------------------------------------------------------------------------------
1 | # Drum Machine
2 |
3 | This is [freeCodeCamp's Drum Machine Project](https://www.freecodecamp.org/learn/front-end-libraries/front-end-libraries-projects/build-a-drum-machine), built in Vue.js!
4 |
5 | *Sound clips in sounds folder are all from YouTube's audio library.*
6 |
7 | ## Tech Stack
8 |
9 | * Vue.js
10 | * Vue CLI
11 | * [Bootstrap Vue](https://bootstrap-vue.org/)
12 |
13 | ## Mockups
14 |
15 |
16 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/README.md:
--------------------------------------------------------------------------------
1 | # drum-app
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "drum-app",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "bootstrap": "4.5.0",
12 | "bootstrap-vue": "2.15.0",
13 | "core-js": "^3.6.5",
14 | "vue": "2.6.11"
15 | },
16 | "devDependencies": {
17 | "@vue/cli-plugin-babel": "~4.4.0",
18 | "@vue/cli-plugin-eslint": "~4.4.0",
19 | "@vue/cli-service": "~4.4.0",
20 | "babel-eslint": "^10.1.0",
21 | "eslint": "^6.7.2",
22 | "eslint-plugin-vue": "^6.2.2",
23 | "node-sass": ">=4.0.0",
24 | "sass": "^1.26.5",
25 | "sass-loader": "^8.0.2",
26 | "vue-template-compiler": "^2.6.11"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/drum-app/public/favicon.ico
--------------------------------------------------------------------------------
/drum-machine/drum-app/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Power
13 |
14 |
15 | Stop
16 |
17 |
18 | {{ lastPlayed }}
19 |
20 |
21 |
22 | Volume
23 |
24 |
25 |
26 |
27 | Loop
28 |
29 |
30 |
31 |
32 |
33 |
39 | {{ clip.name }}
40 | {{ clip.icon }}
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
109 |
142 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/drum-app/src/assets/logo.png
--------------------------------------------------------------------------------
/drum-machine/drum-app/src/clips.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | name: 'Horse',
4 | icon: '🐎',
5 | url: 'https://soundbible.com/mp3/horse_blow-stephan_schutze-1678740304.mp3'
6 | },
7 | {
8 | name: 'Van Door',
9 | icon: '🚪',
10 | url: 'http://soundbible.com/mp3/van-sliding-door-daniel_simon.mp3'
11 | },
12 | {
13 | name: 'Poker Chips',
14 | icon: '🎰',
15 | url: 'http://soundbible.com/mp3/poker-chips-daniel_simon.mp3'
16 | },
17 | {
18 | name: 'Light Chain',
19 | icon: '💡⛓️',
20 | url: 'http://soundbible.com/mp3/light-switch-pull-chain-daniel_simon.mp3'
21 | },
22 | {
23 | name: 'Alert',
24 | icon: '🚨',
25 | url: 'http://soundbible.com/mp3/sms-alert-5-daniel_simon.mp3'
26 | },
27 | {
28 | name: 'Puppy',
29 | icon: '🐕',
30 | url: 'http://soundbible.com/mp3/puppy-barking_ds.mp3'
31 | },
32 | {
33 | name: 'Dragon',
34 | icon: '🐉',
35 | url: 'http://soundbible.com/mp3/European_Dragon_Roaring_and_breathe_fire-daniel-simon.mp3'
36 | },
37 | {
38 | name: 'Shoot Arrow',
39 | icon: '🏹',
40 | url: 'http://soundbible.com/mp3/fire_bow_sound-mike-koenig.mp3'
41 | },
42 | {
43 | name: 'Splash',
44 | icon: '💦',
45 | url: 'http://soundbible.com/mp3/Video_Game_Splash-Ploor-699235037.mp3'
46 | }
47 | ]
48 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
3 |
4 | import 'bootstrap/dist/css/bootstrap.css'
5 | import 'bootstrap-vue/dist/bootstrap-vue.css'
6 |
7 | import App from './App.vue'
8 |
9 | Vue.use(BootstrapVue)
10 | Vue.use(IconsPlugin)
11 |
12 | Vue.config.productionTip = false
13 |
14 | new Vue({
15 | render: h => h(App),
16 | }).$mount('#app')
17 |
--------------------------------------------------------------------------------
/drum-machine/drum-app/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | };
--------------------------------------------------------------------------------
/drum-machine/mockups/drum_machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/mockups/drum_machine.png
--------------------------------------------------------------------------------
/drum-machine/sounds/alarm.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/alarm.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/baseball_glove.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/baseball_glove.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/basketball.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/basketball.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/clown_horn.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/clown_horn.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/crash.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/crash.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/crash_kick.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/crash_kick.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/crash_snare.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/crash_snare.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/crash_symbol.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/crash_symbol.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/cymbal_kick.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/cymbal_kick.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/deflate.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/deflate.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/door_close.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/door_close.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/drill_gear.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/drill_gear.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/drum_roll.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/drum_roll.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/glass_crash.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/glass_crash.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/hammer_cement.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/hammer_cement.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/hand_clap.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/hand_clap.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/tin_drum.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/tin_drum.aiff
--------------------------------------------------------------------------------
/drum-machine/sounds/tympani_bing.aiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/drum-machine/sounds/tympani_bing.aiff
--------------------------------------------------------------------------------
/markdown-previewer/README.md:
--------------------------------------------------------------------------------
1 | # Markdown Previewer
2 |
3 | This is [freeCodeCamp's markdown previewer project](https://www.freecodecamp.org/learn/front-end-libraries/front-end-libraries-projects/build-a-markdown-previewer), built in Vue.js!
4 |
5 | ## Tech Stack
6 |
7 | * Vue.js
8 | * Vue CLI
9 | * [Inkline Design Framework](https://inkline.io/)
10 |
11 | ## Mockups
12 |
13 |
14 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/README.md:
--------------------------------------------------------------------------------
1 | # markdown-previewer
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "markdown-previewer",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@inkline/inkline": "^2.0.0",
12 | "babel-runtime": "6.26.0",
13 | "core-js": "^3.6.5",
14 | "vue": "^2.6.11",
15 | "vue-markdown": "2.2.4"
16 | },
17 | "devDependencies": {
18 | "@inkline/vue-cli-plugin-inkline": "2.2.3",
19 | "@vue/cli-plugin-babel": "~4.4.0",
20 | "@vue/cli-plugin-eslint": "~4.4.0",
21 | "@vue/cli-service": "~4.4.0",
22 | "babel-eslint": "^10.1.0",
23 | "eslint": "^6.7.2",
24 | "eslint-plugin-vue": "^6.2.2",
25 | "node-sass": ">=4.0.0",
26 | "sass-loader": ">=8.0.0",
27 | "vue-template-compiler": "^2.6.11"
28 | },
29 | "eslintConfig": {
30 | "root": true,
31 | "env": {
32 | "node": true
33 | },
34 | "extends": [
35 | "plugin:vue/essential",
36 | "eslint:recommended"
37 | ],
38 | "parserOptions": {
39 | "parser": "babel-eslint"
40 | },
41 | "rules": {}
42 | },
43 | "browserslist": [
44 | "> 1%",
45 | "last 2 versions",
46 | "not dead"
47 | ]
48 | }
49 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/markdown-previewer/markdown-previewer/public/favicon.ico
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Markdown
7 |
12 |
13 |
14 | Formatted Text
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
38 |
39 |
47 |
48 |
53 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/markdown-previewer/markdown-previewer/src/assets/logo.png
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
5 | For a guide and recipes on how to configure / customize this project,
6 | check out the
7 | vue-cli documentation .
8 |
9 |
Installed CLI Plugins
10 |
14 |
Essential Links
15 |
22 |
Ecosystem
23 |
30 |
31 |
32 |
33 |
41 |
42 |
43 |
59 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import { Inkline } from '@inkline/inkline/src';
4 | import * as components from '@inkline/inkline/src/components';
5 | import '@inkline/inkline/src/inkline.scss';
6 |
7 | Vue.use(Inkline, { components });
8 |
9 | Vue.config.productionTip = false
10 |
11 | new Vue({
12 | render: h => h(App),
13 | }).$mount('#app')
14 |
--------------------------------------------------------------------------------
/markdown-previewer/markdown-previewer/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | transpileDependencies: [
3 | '@inkline/inkline'
4 | ]
5 | };
--------------------------------------------------------------------------------
/markdown-previewer/mockups/markdown_previewer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/markdown-previewer/mockups/markdown_previewer.png
--------------------------------------------------------------------------------
/pomodoro-clock/README.md:
--------------------------------------------------------------------------------
1 | # Pomodoro Clock
2 |
3 | This is [freeCodeCamp's Pomodoro Clock Project](https://www.freecodecamp.org/learn/front-end-libraries/front-end-libraries-projects/build-a-pomodoro-clock), built in Vue.js!
4 |
5 | ## Requirements
6 |
7 | 1. User can start timer
8 | 2. User can stop timer
9 | 3. User can choose timer, short break, or long break
10 | 4. User can see progress bar
11 | 5. User can see seconds count down
12 | 6. User can set number of minutes for each type of timer
13 | 7. Optional: add tasks at the bottom
14 | 8. Optional: dark theme and light theme
15 |
16 | ## Tech Stack
17 |
18 | * Vue.js
19 | * Vue CLI
20 | * Vuetify
21 |
22 | ## Colors
23 |
24 | FF8C42 - FFF275 - FF3C38 - 6699CC - 011627
25 |
26 | ## Mockups
27 |
28 |
29 |
--------------------------------------------------------------------------------
/pomodoro-clock/mockups/pomodoro_clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/pomodoro-clock/mockups/pomodoro_clock.png
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/README.md:
--------------------------------------------------------------------------------
1 | # pomodoro-app
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pomodoro-app",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "core-js": "^3.6.5",
12 | "vue": "^2.6.11",
13 | "vuetify": "^2.2.11"
14 | },
15 | "devDependencies": {
16 | "@vue/cli-plugin-babel": "~4.4.0",
17 | "@vue/cli-plugin-eslint": "~4.4.0",
18 | "@vue/cli-service": "~4.4.0",
19 | "babel-eslint": "^10.1.0",
20 | "eslint": "^6.7.2",
21 | "eslint-plugin-vue": "^6.2.2",
22 | "sass": "^1.26.5",
23 | "sass-loader": "^8.0.2",
24 | "vue-cli-plugin-vuetify": "2.0.6",
25 | "vue-template-compiler": "^2.6.11",
26 | "vuetify-loader": "^1.3.0"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/pomodoro-clock/pomodoro-app/public/favicon.ico
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 |
13 |
14 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 | mdi-cog-outline
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
48 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/pomodoro-clock/pomodoro-app/src/assets/logo.png
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 | Artboard 46
2 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/components/Pomodoro.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 | {{ timer.name }}
9 |
10 |
11 |
12 |
16 |
17 | {{ displayMinutes }}:{{ displaySeconds }}
18 |
19 |
20 |
21 |
22 | mdi-play-circle-outline
23 | Start
24 |
25 |
26 | mdi-stop-circle-outline
27 | Stop
28 |
29 |
30 | mdi-restart
31 | Reset
32 |
33 |
34 |
35 |
36 |
42 |
43 |
44 |
45 |
134 |
135 |
145 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/components/SettingsDialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Settings
6 |
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 | Close
22 |
23 |
24 | Save
25 |
26 |
27 |
28 |
29 |
30 |
31 |
63 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import vuetify from './plugins/vuetify';
4 |
5 | Vue.config.productionTip = false
6 |
7 | new Vue({
8 | vuetify,
9 | render: h => h(App)
10 | }).$mount('#app')
11 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/src/plugins/vuetify.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuetify from 'vuetify/lib';
3 |
4 | Vue.use(Vuetify);
5 |
6 | export default new Vuetify({
7 | icons: {
8 | iconfont: 'mdi'
9 | }
10 | });
11 |
--------------------------------------------------------------------------------
/pomodoro-clock/pomodoro-app/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "transpileDependencies": [
3 | "vuetify"
4 | ]
5 | }
--------------------------------------------------------------------------------
/quote-machine/README.md:
--------------------------------------------------------------------------------
1 | # Random Quote Machine
2 |
3 | This is build with HTML, CSS, and Vue.js via CDN imports. Bootstrap also provides some styling assistance.
4 |
5 | ## Mockups
6 |
7 |
8 |
9 | ## Screenshot
10 |
11 |
12 |
--------------------------------------------------------------------------------
/quote-machine/image/pen-fancy-solid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/quote-machine/image/pointer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/quote-machine/image/pointer.png
--------------------------------------------------------------------------------
/quote-machine/image/quote-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/quote-machine/image/quote-machine.png
--------------------------------------------------------------------------------
/quote-machine/image/quote_paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/quote-machine/image/quote_paper.png
--------------------------------------------------------------------------------
/quote-machine/image/sad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/quote-machine/image/sad.png
--------------------------------------------------------------------------------
/quote-machine/image/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gwenf/freecodecamp-projects-vue/870c1fb6d4a6b5b711086c8268bb7729e002f158/quote-machine/image/screenshot.png
--------------------------------------------------------------------------------
/quote-machine/image/wave.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/quote-machine/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Random Quote Machine
6 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
32 |
33 |
34 | "{{ currentQuote }}"
35 |
36 |
37 | - {{ currentQuoteAuthor }}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/quote-machine/script/main.js:
--------------------------------------------------------------------------------
1 | new Vue({
2 | el: "#app",
3 | data: {
4 | quotes: [],
5 | currentQuote: "",
6 | currentQuoteAuthor: "",
7 | animating: false,
8 | quotes_api_url: "https://type.fit/api/quotes"
9 | },
10 | methods: {
11 | newQuote: function () {
12 | this.randomizeQuote()
13 | this.animating = true
14 | setTimeout(() => {
15 | this.animating = false
16 | }, 1000)
17 | },
18 | randomizeQuote: function() {
19 | const num = Math.floor(Math.random() * this.quotes.length)
20 | this.currentQuote = this.quotes[num].text
21 | this.currentQuoteAuthor = this.quotes[num].author
22 | }
23 | },
24 | mounted: function() {
25 | fetch(this.quotes_api_url)
26 | .then(response => response.json())
27 | .then(quotes => {
28 | this.quotes = quotes
29 | this.randomizeQuote()
30 | });
31 | }
32 | })
33 |
--------------------------------------------------------------------------------
/quote-machine/script/quotes.js:
--------------------------------------------------------------------------------
1 | var quotes = [
2 | "There's nothing wrong with having a tree as a friend.",
3 | "The secret to doing anything is believing that you can do it. Anything that you believe you can do strong enough, you can do. Anything. As long as you believe.",
4 | "We don't make mistakes. We just have happy accidents.",
5 | "I think there's an artist hidden at the bottom of every single one of us." ,
6 | "You too can paint almighty pictures.",
7 | "No pressure. Just relax and watch it happen.",
8 | "Don’t forget to make all these little things individuals -- all of them special in their own way.",
9 | "Find freedom on this canvas.",
10 | "It’s so important to do something every day that will make you happy.",
11 | "Talent is a pursued interest. Anything that you’re willing to practice, you can do.",
12 | "Make love to the canvas.",
13 | "[Painting] will bring a lot of good thoughts to your heart.",
14 | "We artists are a different breed of people. We're a happy bunch.",
15 | "We want happy paintings. Happy paintings. If you want sad things, watch the news.",
16 | "That's a crooked tree. We'll send him to Washington.",
17 | "Every day is a good day when you paint.",
18 | "I think each of us, sometime in our life, has wanted to paint a picture.",
19 | "We tell people sometimes: We're like drug dealers, come into town and get everybody absolutely addicted to painting. It doesn't take much to get you addicted.",
20 | "They say everything looks better with odd numbers of things. But sometimes I put even numbers -- just to upset the critics.",
21 | "Gotta give him a friend. Like I always say, 'Everyone needs a friend.'",
22 | "See how it fades right into nothing. That's just what you're looking for.",
23 | "If I paint something, I don't want to have to explain what it is.",
24 | "Water's like me. It's lazy. Boy, it always looks for the easiest way to do things.",
25 | "In painting, you have unlimited power. You have the ability to move mountains. You can bend rivers. But when I get home, the only thing I have power over is the garbage.",
26 | "Don’t forget to tell these special people in your life just how special they are to you.",
27 | "Didn’t you know you had that much power? You can move mountains. You can do anything.",
28 | "I like to beat the brush.",
29 | "Just let go -- and fall like a little waterfall.",
30 | "Talk to the tree, make friends with it.",
31 | "I taught my son to paint mountains like these, and guess what? Now he paints the best darn mountains in the industry.",
32 | "I really believe that if you practice enough you could paint the 'Mona Lisa' with a two-inch brush.",
33 | "Be so very light. Be a gentle whisper.",
34 | "Use absolutely no pressure. Just like an angel’s wing.",
35 | "You need the dark in order to show the light.",
36 | "You can do anything you want to do. This is your world.",
37 | "You have to allow the paint to break to make it beautiful.",
38 | "However you think it should be, that’s exactly how it should be.",
39 | "In nature, dead trees are just as normal as live trees.",
40 | "You can have anything you want in the world -- once you help everyone around you get what they want.",
41 | "If you do too much, it’s going to lose its effectiveness.",
42 | "This is happy place; little squirrels live here and play.",
43 | "That’s where the crows will sit. But we’ll have to put an elevator to put them up there because they can’t fly, but they don’t know that, so they still try.",
44 | "Remember how free clouds are. They just lay around in the sky all day long.",
45 | "We don’t really know where this goes -- and I’m not sure we really care.",
46 | "If we’re going to have animals around we all have to be concerned about them and take care of them.",
47 | "You can do anything here -- the only prerequisite is that it makes you happy.",
48 | "Go out on a limb -- that’s where the fruit is.",
49 | "Isn’t it fantastic that you can change your mind and create all these happy things?",
50 | "Anytime you learn, you gain.",
51 | "It’s life. It’s interesting. It’s fun."
52 | ];
53 |
--------------------------------------------------------------------------------
/quote-machine/style/main.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-image: linear-gradient(to top, #e6e9f0 0%, #eef1f5 100%);
3 | /* background: url('./image/wave.svg');
4 | background-repeat: no-repeat;
5 | background-clip: content-box; */
6 | padding: 0px;
7 | margin: 0px;
8 | font-family: 'Kaushan Script', cursive;
9 | font-size: 2.81rem;
10 | }
11 |
12 | .backimg {
13 | position: absolute;
14 | width: 100%;
15 | height: 100%;
16 | z-index: -1;
17 | display: flex;
18 | align-items: flex-end;
19 | }
20 |
21 | button {
22 | padding: 0px 8px 0px 6px;
23 | height: 35px;
24 | }
25 |
26 | #app {
27 | display: flex;
28 | width: 100vw;
29 | height: 100vh;
30 | align-items: center;
31 | justify-content: center;
32 | }
33 |
34 | .main-content {
35 | position: relative;
36 | height: 743px;
37 | width: 960px;
38 | /* border: 2px solid blue; */
39 | overflow: hidden;
40 | }
41 |
42 | .changeQuote {
43 | height: 100%;
44 | width: 100%;
45 | position: absolute;
46 | top: 0%;
47 | left: 0%;
48 | cursor: url('../image/sad.png'), auto !important;
49 | }
50 |
51 | #quote_background {
52 | height: 100%;
53 | width: 100%;
54 | position: absolute;
55 | top: 0%;
56 | left: 0%;
57 | }
58 |
59 | .card-text {
60 | width: 70%;
61 | height: 50%;
62 | position: absolute;
63 | top: 60%;
64 | left: 50%;
65 | transform: translate(-50%, -50%);
66 | /* border: 2px solid red; */
67 | display: flex;
68 | flex-direction: column;
69 | align-items: end;
70 | justify-content: center;
71 | }
72 |
73 | .card-text p {
74 | color: rebeccapurple;
75 | width: 100%;
76 | text-align: center;
77 | }
78 |
79 | .card-text p:nth-child(2) {
80 | margin-top: 2rem;
81 | text-align: end;
82 | }
83 |
84 | footer {
85 | position: absolute;
86 | bottom: 0%;
87 | right: 6%;
88 | margin-bottom: 20px;
89 | }
90 |
91 | footer a {
92 | text-decoration: none;
93 | color: #ffffff;
94 | font-size: 1.2rem;
95 | }
96 | footer a:hover {
97 | color: #ffffff;
98 | font-size: 2.2rem;
99 | }
100 |
101 | /*
102 | Quote Animations
103 | */
104 | .card-text p {
105 | transform: translateX(10px);
106 | }
107 |
108 | .animate {
109 | animation: fadeInTranslateX ease 1s;
110 | -webkit-animation: fadeInTranslateX ease 1s;
111 | -moz-animation: fadeInTranslateX ease 1s;
112 | -o-animation: fadeInTranslateX ease 1s;
113 | -ms-animation: fadeInTranslateX ease 1s;
114 | }
115 |
116 | @keyframes fadeInTranslateX {
117 | 0% {
118 | opacity: 0;
119 | transform: translateX(-5px);
120 | }
121 | 100% {
122 | opacity: 1;
123 | transform: translateX(10px);
124 | }
125 | }
126 |
127 | @-moz-keyframes fadeInTranslateX {
128 | 0% {
129 | opacity: 0;
130 | transform: translateX(-5px);
131 | }
132 | 100% {
133 | opacity: 1;
134 | transform: translateX(10px);
135 | }
136 | }
137 |
138 | @-webkit-keyframes fadeInTranslateX {
139 | 0% {
140 | opacity: 0;
141 | transform: translateX(-5px);
142 | }
143 | 100% {
144 | opacity: 1;
145 | transform: translateX(10px);
146 | }
147 | }
148 |
149 | @-o-keyframes fadeInTranslateX {
150 | 0% {
151 | opacity: 0;
152 | transform: translateX(-5px);
153 | }
154 | 100% {
155 | opacity: 1;
156 | transform: translateX(10px);
157 | }
158 | }
159 |
160 | @-ms-keyframes fadeInTranslateX {
161 | 0% {
162 | opacity: 0;
163 | transform: translateX(-5px);
164 | }
165 | 100% {
166 | opacity: 1;
167 | transform: translateX(10px);
168 | }
169 | }
170 |
--------------------------------------------------------------------------------