├── 2fdtribute
├── src
│ ├── .temp
│ │ ├── now.js
│ │ ├── plugins-client.js
│ │ ├── plugins-server.js
│ │ ├── constants.js
│ │ ├── config.js
│ │ ├── icons.js
│ │ └── routes.js
│ ├── favicon.png
│ ├── assets
│ │ └── images
│ │ │ └── 2FD-Cover.jpg
│ ├── components
│ │ └── README.md
│ ├── layouts
│ │ ├── README.md
│ │ └── Default.vue
│ ├── pages
│ │ ├── README.md
│ │ ├── Index.vue
│ │ └── EpisodeList.vue
│ ├── templates
│ │ ├── README.md
│ │ └── Episode.vue
│ └── main.js
├── api
│ ├── podcast
│ │ ├── sample.dat
│ │ ├── function.json
│ │ └── index.js
│ ├── .funcignore
│ ├── package-lock.json
│ ├── proxies.json
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ ├── settings.json
│ │ └── tasks.json
│ ├── package.json
│ ├── host.json
│ └── .gitignore
├── .vscode
│ ├── extensions.json
│ ├── settings.json
│ ├── launch.json
│ └── tasks.json
├── static
│ ├── routes.json
│ └── README.md
├── package.json
├── gridsome.config.js
├── README.md
└── gridsome.server.js
├── .github
└── workflows
│ └── azure-static-web-apps-jolly-tree-08c20e70f.yml
└── .gitignore
/2fdtribute/src/.temp/now.js:
--------------------------------------------------------------------------------
1 | export default 1595618711921
--------------------------------------------------------------------------------
/2fdtribute/api/podcast/sample.dat:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Azure"
3 | }
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/plugins-client.js:
--------------------------------------------------------------------------------
1 |
2 | export default [
3 | ]
4 |
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/plugins-server.js:
--------------------------------------------------------------------------------
1 |
2 | export default [
3 | ]
4 |
--------------------------------------------------------------------------------
/2fdtribute/src/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/1kevgriff/2FD-Tribute/master/2fdtribute/src/favicon.png
--------------------------------------------------------------------------------
/2fdtribute/api/.funcignore:
--------------------------------------------------------------------------------
1 | *.js.map
2 | *.ts
3 | .git*
4 | .vscode
5 | local.settings.json
6 | test
7 | tsconfig.json
--------------------------------------------------------------------------------
/2fdtribute/api/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "api",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1
5 | }
6 |
--------------------------------------------------------------------------------
/2fdtribute/api/proxies.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/proxies",
3 | "proxies": {}
4 | }
5 |
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/constants.js:
--------------------------------------------------------------------------------
1 | export const NOT_FOUND_NAME = "404"
2 | export const NOT_FOUND_PATH = "/404"
3 |
--------------------------------------------------------------------------------
/2fdtribute/api/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/2fdtribute/src/assets/images/2FD-Cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/1kevgriff/2FD-Tribute/master/2fdtribute/src/assets/images/2FD-Cover.jpg
--------------------------------------------------------------------------------
/2fdtribute/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions",
4 | "ms-dotnettools.csharp"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/2fdtribute/static/routes.json:
--------------------------------------------------------------------------------
1 | {
2 | "routes": [
3 | {
4 | "route": "/podcast",
5 | "serve": "/api/podcast",
6 | "statusCode": 301
7 | }
8 | ]
9 | }
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "trailingSlash": true,
3 | "pathPrefix": "",
4 | "titleTemplate": "%s - Gridsome",
5 | "siteUrl": "",
6 | "version": "0.7.19",
7 | "catchLinks": true
8 | }
--------------------------------------------------------------------------------
/2fdtribute/src/components/README.md:
--------------------------------------------------------------------------------
1 | Add components that will be imported to Pages and Layouts to this folder.
2 | Learn more about components here: https://gridsome.org/docs/components/
3 |
4 | You can delete this file.
5 |
--------------------------------------------------------------------------------
/2fdtribute/static/README.md:
--------------------------------------------------------------------------------
1 | Add static files here. Files in this directory will be copied directly to `dist` folder during build. For example, /static/robots.txt will be located at https://yoursite.com/robots.txt.
2 |
3 | This file should be deleted.
--------------------------------------------------------------------------------
/2fdtribute/api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "api",
3 | "version": "1.0.0",
4 | "description": "",
5 | "scripts": {
6 | "start": "func start",
7 | "test": "echo \"No tests yet...\""
8 | },
9 | "dependencies": {},
10 | "devDependencies": {}
11 | }
12 |
--------------------------------------------------------------------------------
/2fdtribute/src/layouts/README.md:
--------------------------------------------------------------------------------
1 | Layout components are used to wrap pages and templates. Layouts should contain components like headers, footers or sidebars that will be used across the site.
2 |
3 | Learn more about Layouts: https://gridsome.org/docs/layouts/
4 |
5 | You can delete this file.
6 |
--------------------------------------------------------------------------------
/2fdtribute/src/pages/README.md:
--------------------------------------------------------------------------------
1 | Pages are usually used for normal pages or for listing items from a GraphQL collection.
2 | Add .vue files here to create pages. For example **About.vue** will be **site.com/about**.
3 | Learn more about pages: https://gridsome.org/docs/pages/
4 |
5 | You can delete this file.
6 |
--------------------------------------------------------------------------------
/2fdtribute/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.deploySubpath": "bin/Release/netcoreapp3.1/publish",
3 | "azureFunctions.projectLanguage": "C#",
4 | "azureFunctions.projectRuntime": "~3",
5 | "debug.internalConsoleOptions": "neverOpen",
6 | "azureFunctions.preDeployTask": "publish"
7 | }
--------------------------------------------------------------------------------
/2fdtribute/src/templates/README.md:
--------------------------------------------------------------------------------
1 | Templates for **GraphQL collections** should be added here.
2 | To create a template for a collection called `WordPressPost`
3 | create a file named `WordPressPost.vue` in this folder.
4 |
5 | Learn more: https://gridsome.org/docs/templates/
6 |
7 | You can delete this file.
8 |
--------------------------------------------------------------------------------
/2fdtribute/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "2fdtribute",
3 | "private": true,
4 | "scripts": {
5 | "build": "gridsome build",
6 | "develop": "gridsome develop",
7 | "explore": "gridsome explore"
8 | },
9 | "dependencies": {
10 | "gridsome": "^0.7.0",
11 | "rss-parser": "^3.9.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/2fdtribute/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to .NET Functions",
6 | "type": "coreclr",
7 | "request": "attach",
8 | "processId": "${command:azureFunctions.pickProcess}"
9 | }
10 | ]
11 | }
--------------------------------------------------------------------------------
/2fdtribute/api/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to Node Functions",
6 | "type": "node",
7 | "request": "attach",
8 | "port": 9229,
9 | "preLaunchTask": "func: host start"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/2fdtribute/api/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.deploySubpath": ".",
3 | "azureFunctions.postDeployTask": "npm install",
4 | "azureFunctions.projectLanguage": "JavaScript",
5 | "azureFunctions.projectRuntime": "~3",
6 | "debug.internalConsoleOptions": "neverOpen",
7 | "azureFunctions.preDeployTask": "npm prune"
8 | }
--------------------------------------------------------------------------------
/2fdtribute/src/templates/Episode.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{$context.title}}
4 |
5 |
6 |
7 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/2fdtribute/gridsome.config.js:
--------------------------------------------------------------------------------
1 | // This is where project configuration and plugin options are located.
2 | // Learn more: https://gridsome.org/docs/config
3 |
4 | // Changes here require a server restart.
5 | // To restart press CTRL + C in terminal and run `gridsome develop`
6 |
7 | module.exports = {
8 | siteName: 'Gridsome',
9 | plugins: []
10 | }
11 |
--------------------------------------------------------------------------------
/2fdtribute/api/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensionBundle": {
12 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
13 | "version": "[1.*, 2.0.0)"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/2fdtribute/api/podcast/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "bindings": [
3 | {
4 | "authLevel": "anonymous",
5 | "type": "httpTrigger",
6 | "direction": "in",
7 | "name": "req",
8 | "methods": [
9 | "get",
10 | "post"
11 | ]
12 | },
13 | {
14 | "type": "http",
15 | "direction": "out",
16 | "name": "res"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/2fdtribute/src/pages/Index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
15 |
16 |
21 |
--------------------------------------------------------------------------------
/2fdtribute/README.md:
--------------------------------------------------------------------------------
1 | # Default starter for Gridsome
2 |
3 | This is the project you get when you run `gridsome create new-project`.
4 |
5 | ### 1. Install Gridsome CLI tool if you don't have
6 |
7 | `npm install --global @gridsome/cli`
8 |
9 | ### 2. Create a Gridsome project
10 |
11 | 1. `gridsome create my-gridsome-site` to install default starter
12 | 2. `cd my-gridsome-site` to open the folder
13 | 3. `gridsome develop` to start a local dev server at `http://localhost:8080`
14 | 4. Happy coding 🎉🙌
15 |
--------------------------------------------------------------------------------
/2fdtribute/api/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "func",
6 | "command": "host start",
7 | "problemMatcher": "$func-watch",
8 | "isBackground": true,
9 | "dependsOn": "npm install"
10 | },
11 | {
12 | "type": "shell",
13 | "label": "npm install",
14 | "command": "npm install"
15 | },
16 | {
17 | "type": "shell",
18 | "label": "npm prune",
19 | "command": "npm prune --production",
20 | "problemMatcher": []
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/2fdtribute/src/main.js:
--------------------------------------------------------------------------------
1 | // This is the main.js file. Import global CSS and scripts here.
2 | // The Client API can be used here. Learn more: gridsome.org/docs/client-api
3 |
4 | import DefaultLayout from '~/layouts/Default.vue'
5 |
6 | export default function (Vue, { router, head, isClient }) {
7 | // Set default layout as a global component
8 | Vue.component('Layout', DefaultLayout);
9 |
10 | Vue.filter('local-link', function (val){
11 | var newPath = val.replace('https://2frugaldudes.com', '');
12 | newPath = newPath.substring(0, newPath.length - 1);
13 |
14 | return newPath;
15 | })
16 | }
17 |
--------------------------------------------------------------------------------
/2fdtribute/src/pages/EpisodeList.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 | query {
13 | rss: allRssFeed {
14 | edges {
15 | node {
16 | id
17 | title
18 | content_encoded
19 | link
20 | pubDate
21 | enclosure {
22 | url
23 | length
24 | type
25 | }
26 | }
27 | }
28 | }
29 | }
30 |
31 |
32 |
35 |
36 |
--------------------------------------------------------------------------------
/2fdtribute/api/podcast/index.js:
--------------------------------------------------------------------------------
1 | let fs = require('fs').promises;
2 |
3 | module.exports = async function (context, req) {
4 | let fileName = "./podcast.rss";
5 | let fileData = await fs.readFile(fileName);
6 |
7 | context.res = {
8 | status: 200,
9 | headers: {
10 | "content-type": "application/rss+xml;"
11 | },
12 | body: fileData
13 | };
14 |
15 | // if (req.query.name || (req.body && req.body.name)) {
16 | // context.res = {
17 | // // status: 200, /* Defaults to 200 */
18 | // body: "Hello " + (req.query.name || req.body.name)
19 | // };
20 | // }
21 | // else {
22 | // context.res = {
23 | // status: 400,
24 | // body: "Please pass a name on the query string or in the request body"
25 | // };
26 | // }
27 | };
--------------------------------------------------------------------------------
/2fdtribute/src/layouts/Default.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
14 |
15 |
16 |
17 | query {
18 | metadata {
19 | siteName
20 | }
21 | }
22 |
23 |
24 |
51 |
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/icons.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "touchiconMimeType": "image/png",
3 | "faviconMimeType": "image/png",
4 | "precomposed": false,
5 | "touchicons": [
6 | {
7 | "width": 76,
8 | "src": "/assets/static/src/favicon.png?width=76&key=0f5cdb8"
9 | },
10 | {
11 | "width": 152,
12 | "src": "/assets/static/src/favicon.png?width=152&key=0f5cdb8"
13 | },
14 | {
15 | "width": 120,
16 | "src": "/assets/static/src/favicon.png?width=120&key=0f5cdb8"
17 | },
18 | {
19 | "width": 167,
20 | "src": "/assets/static/src/favicon.png?width=167&key=0f5cdb8"
21 | },
22 | {
23 | "width": 180,
24 | "src": "/assets/static/src/favicon.png?width=180&key=0f5cdb8"
25 | }
26 | ],
27 | "favicons": [
28 | {
29 | "width": 16,
30 | "src": "/assets/static/src/favicon.png?width=16&key=375f284"
31 | },
32 | {
33 | "width": 32,
34 | "src": "/assets/static/src/favicon.png?width=32&key=375f284"
35 | },
36 | {
37 | "width": 96,
38 | "src": "/assets/static/src/favicon.png?width=96&key=375f284"
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/2fdtribute/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "clean",
6 | "command": "dotnet",
7 | "args": [
8 | "clean",
9 | "/property:GenerateFullPaths=true",
10 | "/consoleloggerparameters:NoSummary"
11 | ],
12 | "type": "process",
13 | "problemMatcher": "$msCompile"
14 | },
15 | {
16 | "label": "build",
17 | "command": "dotnet",
18 | "args": [
19 | "build",
20 | "/property:GenerateFullPaths=true",
21 | "/consoleloggerparameters:NoSummary"
22 | ],
23 | "type": "process",
24 | "dependsOn": "clean",
25 | "group": {
26 | "kind": "build",
27 | "isDefault": true
28 | },
29 | "problemMatcher": "$msCompile"
30 | },
31 | {
32 | "label": "clean release",
33 | "command": "dotnet",
34 | "args": [
35 | "clean",
36 | "--configuration",
37 | "Release",
38 | "/property:GenerateFullPaths=true",
39 | "/consoleloggerparameters:NoSummary"
40 | ],
41 | "type": "process",
42 | "problemMatcher": "$msCompile"
43 | },
44 | {
45 | "label": "publish",
46 | "command": "dotnet",
47 | "args": [
48 | "publish",
49 | "--configuration",
50 | "Release",
51 | "/property:GenerateFullPaths=true",
52 | "/consoleloggerparameters:NoSummary"
53 | ],
54 | "type": "process",
55 | "dependsOn": "clean release",
56 | "problemMatcher": "$msCompile"
57 | },
58 | {
59 | "type": "func",
60 | "dependsOn": "build",
61 | "options": {
62 | "cwd": "${workspaceFolder}/bin/Debug/netcoreapp3.1"
63 | },
64 | "command": "host start",
65 | "isBackground": true,
66 | "problemMatcher": "$func-watch"
67 | }
68 | ]
69 | }
--------------------------------------------------------------------------------
/2fdtribute/api/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 |
24 | # nyc test coverage
25 | .nyc_output
26 |
27 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
28 | .grunt
29 |
30 | # Bower dependency directory (https://bower.io/)
31 | bower_components
32 |
33 | # node-waf configuration
34 | .lock-wscript
35 |
36 | # Compiled binary addons (https://nodejs.org/api/addons.html)
37 | build/Release
38 |
39 | # Dependency directories
40 | node_modules/
41 | jspm_packages/
42 |
43 | # TypeScript v1 declaration files
44 | typings/
45 |
46 | # Optional npm cache directory
47 | .npm
48 |
49 | # Optional eslint cache
50 | .eslintcache
51 |
52 | # Optional REPL history
53 | .node_repl_history
54 |
55 | # Output of 'npm pack'
56 | *.tgz
57 |
58 | # Yarn Integrity file
59 | .yarn-integrity
60 |
61 | # dotenv environment variables file
62 | .env
63 | .env.test
64 |
65 | # parcel-bundler cache (https://parceljs.org/)
66 | .cache
67 |
68 | # next.js build output
69 | .next
70 |
71 | # nuxt.js build output
72 | .nuxt
73 |
74 | # vuepress build output
75 | .vuepress/dist
76 |
77 | # Serverless directories
78 | .serverless/
79 |
80 | # FuseBox cache
81 | .fusebox/
82 |
83 | # DynamoDB Local files
84 | .dynamodb/
85 |
86 | # TypeScript output
87 | dist
88 | out
89 |
90 | # Azure Functions artifacts
91 | bin
92 | obj
93 | appsettings.json
94 | local.settings.json
--------------------------------------------------------------------------------
/2fdtribute/gridsome.server.js:
--------------------------------------------------------------------------------
1 | // Server API makes it possible to hook into various parts of Gridsome
2 | // on server-side and add custom data to the GraphQL data layer.
3 | // Learn more: https://gridsome.org/docs/server-api/
4 |
5 | // Changes here require a server restart.
6 | // To restart press CTRL + C in terminal and run `gridsome develop`
7 |
8 | let fs = require('fs').promises;
9 | let Parser = require('rss-parser');
10 | let parser = new Parser();
11 |
12 | module.exports = function (api) {
13 | api.loadSource(async actions => {
14 | // Use the Data Store API here: https://gridsome.org/docs/data-store-api/
15 | let fileName = "./src/assets/rss/podcast.rss";
16 |
17 | let fileData = await fs.readFile(fileName);
18 |
19 | let feed = await parser.parseString(fileData);
20 | const rssFeed = actions.addCollection('rss_feed');
21 |
22 | feed.items.forEach(item => {
23 | rssFeed.addNode(item);
24 | });
25 | })
26 |
27 | api.createPages(async ({ createPage, graphql }) => {
28 | // Use the Pages API here: https://gridsome.org/docs/pages-api/
29 | const { data } = await graphql(`query {
30 | allRssFeed {
31 | edges {
32 | node {
33 | id
34 | title
35 | content
36 | content_encoded
37 | link
38 | pubDate
39 | enclosure {
40 | url
41 | length
42 | type
43 | }
44 | }
45 | }
46 | }
47 | }`);
48 |
49 | data.allRssFeed.edges.forEach(({ node }) => {
50 | var newPath = node.link.replace('https://2frugaldudes.com', '');
51 | newPath = newPath.substring(0, newPath.length - 1);
52 |
53 | createPage({
54 | path: newPath,
55 | component: './src/templates/Episode.vue',
56 | context: node
57 | });
58 | })
59 | })
60 | }
61 |
--------------------------------------------------------------------------------
/.github/workflows/azure-static-web-apps-jolly-tree-08c20e70f.yml:
--------------------------------------------------------------------------------
1 | name: Azure Static Web Apps CI/CD
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | pull_request:
8 | types: [opened, synchronize, reopened, closed]
9 | branches:
10 | - master
11 |
12 | jobs:
13 | build_and_deploy_job:
14 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
15 | runs-on: ubuntu-latest
16 | name: Build and Deploy Job
17 | steps:
18 | - uses: actions/checkout@v2
19 | with:
20 | submodules: true
21 | - name: Build And Deploy
22 | id: builddeploy
23 | uses: Azure/static-web-apps-deploy@v0.0.1-preview
24 | with:
25 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_TREE_08C20E70F }}
26 | repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
27 | action: "upload"
28 | ###### Repository/Build Configurations - These values can be configured to match you app requirements. ######
29 | # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
30 | app_location: "/2fdtribute" # App source code path
31 | api_location: "/2fdtribute/api" # Api source code path - optional
32 | app_artifact_location: "dist" # Built app content directory - optional
33 | ###### End of Repository/Build Configurations ######
34 |
35 | close_pull_request_job:
36 | if: github.event_name == 'pull_request' && github.event.action == 'closed'
37 | runs-on: ubuntu-latest
38 | name: Close Pull Request Job
39 | steps:
40 | - name: Close Pull Request
41 | id: closepullrequest
42 | uses: Azure/static-web-apps-deploy@v0.0.1-preview
43 | with:
44 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_TREE_08C20E70F }}
45 | action: "close"
46 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # Azure Functions localsettings file
5 | local.settings.json
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | bld/
24 | [Bb]in/
25 | [Oo]bj/
26 | [Ll]og/
27 |
28 | # Visual Studio 2015 cache/options directory
29 | .vs/
30 | # Uncomment if you have tasks that create the project's static files in wwwroot
31 | #wwwroot/
32 |
33 | # MSTest test Results
34 | [Tt]est[Rr]esult*/
35 | [Bb]uild[Ll]og.*
36 |
37 | # NUNIT
38 | *.VisualState.xml
39 | TestResult.xml
40 |
41 | # Build Results of an ATL Project
42 | [Dd]ebugPS/
43 | [Rr]eleasePS/
44 | dlldata.c
45 |
46 | # DNX
47 | project.lock.json
48 | project.fragment.lock.json
49 | artifacts/
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # NCrunch
117 | _NCrunch_*
118 | .*crunch*.local.xml
119 | nCrunchTemp_*
120 |
121 | # MightyMoose
122 | *.mm.*
123 | AutoTest.Net/
124 |
125 | # Web workbench (sass)
126 | .sass-cache/
127 |
128 | # Installshield output folder
129 | [Ee]xpress/
130 |
131 | # DocProject is a documentation generator add-in
132 | DocProject/buildhelp/
133 | DocProject/Help/*.HxT
134 | DocProject/Help/*.HxC
135 | DocProject/Help/*.hhc
136 | DocProject/Help/*.hhk
137 | DocProject/Help/*.hhp
138 | DocProject/Help/Html2
139 | DocProject/Help/html
140 |
141 | # Click-Once directory
142 | publish/
143 |
144 | # Publish Web Output
145 | *.[Pp]ublish.xml
146 | *.azurePubxml
147 | # TODO: Comment the next line if you want to checkin your web deploy settings
148 | # but database connection strings (with potential passwords) will be unencrypted
149 | #*.pubxml
150 | *.publishproj
151 |
152 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
153 | # checkin your Azure Web App publish settings, but sensitive information contained
154 | # in these scripts will be unencrypted
155 | PublishScripts/
156 |
157 | # NuGet Packages
158 | *.nupkg
159 | # The packages folder can be ignored because of Package Restore
160 | **/packages/*
161 | # except build/, which is used as an MSBuild target.
162 | !**/packages/build/
163 | # Uncomment if necessary however generally it will be regenerated when needed
164 | #!**/packages/repositories.config
165 | # NuGet v3's project.json files produces more ignoreable files
166 | *.nuget.props
167 | *.nuget.targets
168 |
169 | # Microsoft Azure Build Output
170 | csx/
171 | *.build.csdef
172 |
173 | # Microsoft Azure Emulator
174 | ecf/
175 | rcf/
176 |
177 | # Windows Store app package directories and files
178 | AppPackages/
179 | BundleArtifacts/
180 | Package.StoreAssociation.xml
181 | _pkginfo.txt
182 |
183 | # Visual Studio cache files
184 | # files ending in .cache can be ignored
185 | *.[Cc]ache
186 | # but keep track of directories ending in .cache
187 | !*.[Cc]ache/
188 |
189 | # Others
190 | ClientBin/
191 | ~$*
192 | *~
193 | *.dbmdl
194 | *.dbproj.schemaview
195 | *.jfm
196 | *.pfx
197 | *.publishsettings
198 | node_modules/
199 | orleans.codegen.cs
200 |
201 | # Since there are multiple workflows, uncomment next line to ignore bower_components
202 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
203 | #bower_components/
204 |
205 | # RIA/Silverlight projects
206 | Generated_Code/
207 |
208 | # Backup & report files from converting an old project file
209 | # to a newer Visual Studio version. Backup files are not needed,
210 | # because we have git ;-)
211 | _UpgradeReport_Files/
212 | Backup*/
213 | UpgradeLog*.XML
214 | UpgradeLog*.htm
215 |
216 | # SQL Server files
217 | *.mdf
218 | *.ldf
219 |
220 | # Business Intelligence projects
221 | *.rdl.data
222 | *.bim.layout
223 | *.bim_*.settings
224 |
225 | # Microsoft Fakes
226 | FakesAssemblies/
227 |
228 | # GhostDoc plugin setting file
229 | *.GhostDoc.xml
230 |
231 | # Node.js Tools for Visual Studio
232 | .ntvs_analysis.dat
233 |
234 | # Visual Studio 6 build log
235 | *.plg
236 |
237 | # Visual Studio 6 workspace options file
238 | *.opt
239 |
240 | # Visual Studio LightSwitch build output
241 | **/*.HTMLClient/GeneratedArtifacts
242 | **/*.DesktopClient/GeneratedArtifacts
243 | **/*.DesktopClient/ModelManifest.xml
244 | **/*.Server/GeneratedArtifacts
245 | **/*.Server/ModelManifest.xml
246 | _Pvt_Extensions
247 |
248 | # Paket dependency manager
249 | .paket/paket.exe
250 | paket-files/
251 |
252 | # FAKE - F# Make
253 | .fake/
254 |
255 | # JetBrains Rider
256 | .idea/
257 | *.sln.iml
258 |
259 | # CodeRush
260 | .cr/
261 |
262 | # Python Tools for Visual Studio (PTVS)
263 | __pycache__/
264 | *.pyc
--------------------------------------------------------------------------------
/2fdtribute/src/.temp/routes.js:
--------------------------------------------------------------------------------
1 | const c1 = () => import(/* webpackChunkName: "page--src-templates-episode-vue" */ "C:\\repos\\2FD\\2FD-Tribute\\2fdtribute\\src\\templates\\Episode.vue")
2 | const c2 = () => import(/* webpackChunkName: "page--src-pages-episode-list-vue" */ "C:\\repos\\2FD\\2FD-Tribute\\2fdtribute\\src\\pages\\EpisodeList.vue")
3 | const c3 = () => import(/* webpackChunkName: "page--node-modules-gridsome-app-pages-404-vue" */ "C:\\repos\\2FD\\2FD-Tribute\\2fdtribute\\node_modules\\gridsome\\app\\pages\\404.vue")
4 | const c4 = () => import(/* webpackChunkName: "page--src-pages-index-vue" */ "C:\\repos\\2FD\\2FD-Tribute\\2fdtribute\\src\\pages\\Index.vue")
5 |
6 | export default [
7 | {
8 | path: "/your-guide-to-passive-real-estate-investing-using-real-estate-syndications/",
9 | component: c1
10 | },
11 | {
12 | path: "/why-women-should-invest-in-real-estate-and-how-to-get-started/",
13 | component: c1
14 | },
15 | {
16 | path: "/what-to-do-when-you-get-extra-money/",
17 | component: c1
18 | },
19 | {
20 | path: "/when-its-worth-it-to-spend-extra-money/",
21 | component: c1
22 | },
23 | {
24 | path: "/using-a-personal-finance-journal-to-reach-your-goals/",
25 | component: c1
26 | },
27 | {
28 | path: "/your-guide-to-house-hacking/",
29 | component: c1
30 | },
31 | {
32 | path: "/the-best-ways-to-prepare-for-retirement-healthcare-costs/",
33 | component: c1
34 | },
35 | {
36 | path: "/tips-for-selling-items-on-offerup-for-extra-income/",
37 | component: c1
38 | },
39 | {
40 | path: "/top-five-tips-for-picking-the-right-credit-card/",
41 | component: c1
42 | },
43 | {
44 | path: "/when-to-do-your-own-repairs/",
45 | component: c1
46 | },
47 | {
48 | path: "/smart-strategies-for-saving-up-for-your-travel-goals/",
49 | component: c1
50 | },
51 | {
52 | path: "/teaching-financial-literacy-education-from-an-early-age/",
53 | component: c1
54 | },
55 | {
56 | path: "/tips-for-choosing-a-mortgage-insurance-provider/",
57 | component: c1
58 | },
59 | {
60 | path: "/tips-for-frugal-travel-in-the-uk/",
61 | component: c1
62 | },
63 | {
64 | path: "/tips-for-living-on-an-inconsistent-income/",
65 | component: c1
66 | },
67 | {
68 | path: "/tips-for-managing-finances-in-the-military/",
69 | component: c1
70 | },
71 | {
72 | path: "/rental-secrets-controlling-what-you-pay-for-rent/",
73 | component: c1
74 | },
75 | {
76 | path: "/small-business-survival-tips-for-the-pandemic/",
77 | component: c1
78 | },
79 | {
80 | path: "/tips-for-filing-a-tax-extension/",
81 | component: c1
82 | },
83 | {
84 | path: "/tips-for-managing-your-business-finances/",
85 | component: c1
86 | },
87 | {
88 | path: "/tips-for-raising-money-savvy-kids/",
89 | component: c1
90 | },
91 | {
92 | path: "/tips-for-saving-money-on-healthcare/",
93 | component: c1
94 | },
95 | {
96 | path: "/tips-for-spending-money-in-groups/",
97 | component: c1
98 | },
99 | {
100 | path: "/upgrading-your-financial-operating-systems/",
101 | component: c1
102 | },
103 | {
104 | path: "/parenting-and-technology-raising-kids-in-the-digital-era/",
105 | component: c1
106 | },
107 | {
108 | path: "/re-evaluating-expenses-after-covid-19/",
109 | component: c1
110 | },
111 | {
112 | path: "/supporting-anti-racism-through-giving/",
113 | component: c1
114 | },
115 | {
116 | path: "/our-stimulus-check-review-small-business-and-personal/",
117 | component: c1
118 | },
119 | {
120 | path: "/putting-the-fun-back-in-frugality/",
121 | component: c1
122 | },
123 | {
124 | path: "/making-better-financial-decisions-to-reach-success-faster/",
125 | component: c1
126 | },
127 | {
128 | path: "/mysteries-and-lies-about-federal-student-loans/",
129 | component: c1
130 | },
131 | {
132 | path: "/our-tiller-money-app-review/",
133 | component: c1
134 | },
135 | {
136 | path: "/how-to-work-on-your-business-instead-of-in-your-business/",
137 | component: c1
138 | },
139 | {
140 | path: "/lifestyle-deflation-for-a-better-life/",
141 | component: c1
142 | },
143 | {
144 | path: "/managing-financial-expectations-during-divorce/",
145 | component: c1
146 | },
147 | {
148 | path: "/figuring-out-whats-next-in-financial-independence-and-financial-lifestyle-planning/",
149 | component: c1
150 | },
151 | {
152 | path: "/how-blue-collar-workers-can-achieve-the-american-dream/",
153 | component: c1
154 | },
155 | {
156 | path: "/how-to-be-a-good-human-during-the-pandemic/",
157 | component: c1
158 | },
159 | {
160 | path: "/how-to-de-risk-the-move-to-self-employment/",
161 | component: c1
162 | },
163 | {
164 | path: "/getting-real-estate-deals-for-0-out-of-pocket/",
165 | component: c1
166 | },
167 | {
168 | path: "/how-to-form-a-healthy-relationship-with-money/",
169 | component: c1
170 | },
171 | {
172 | path: "/how-to-start-a-business-on-a-budget/",
173 | component: c1
174 | },
175 | {
176 | path: "/how-to-talk-about-money-with-your-spouse/",
177 | component: c1
178 | },
179 | {
180 | path: "/2fd-061-financial-abuse-improving-your-credit-score-single-parents-special-needs-assistance-freelancing-frugal-self-defense-and-short-term-investments/",
181 | component: c1
182 | },
183 | {
184 | path: "/how-to-do-a-profit-first-distribution/",
185 | component: c1
186 | },
187 | {
188 | path: "/how-to-get-started-with-social-investing/",
189 | component: c1
190 | },
191 | {
192 | path: "/how-to-implement-a-money-management-system/",
193 | component: c1
194 | },
195 | {
196 | path: "/how-to-save-money-at-amusement-parks/",
197 | component: c1
198 | },
199 | {
200 | path: "/generating-passive-income-with-real-estate-investing/",
201 | component: c1
202 | },
203 | {
204 | path: "/getting-a-mortgage-without-a-credit-score/",
205 | component: c1
206 | },
207 | {
208 | path: "/helpful-tips-for-buying-new-appliances/",
209 | component: c1
210 | },
211 | {
212 | path: "/helpful-tips-for-smart-online-shopping/",
213 | component: c1
214 | },
215 | {
216 | path: "/investing-in-mortgage-backed-securities/",
217 | component: c1
218 | },
219 | {
220 | path: "/is-disney-worth-the-investment/",
221 | component: c1
222 | },
223 | {
224 | path: "/2fd-085-active-military-veteran-and-government-finances-financial-independence-in-hawaii-and-finding-the-best-dates-to-fly/",
225 | component: c1
226 | },
227 | {
228 | path: "/frugal-tips-for-building-a-garage-gym/",
229 | component: c1
230 | },
231 | {
232 | path: "/frugal-tips-for-buying-lawn-maintenance-equipment/",
233 | component: c1
234 | },
235 | {
236 | path: "/2fd-059-the-path-towards-wealth-401k-changes-saving-on-groceries-tackling-debt-new-years-resolutions-and-cattle/",
237 | component: c1
238 | },
239 | {
240 | path: "/an-update-on-the-payroll-protection-program-for-small-business-employees/",
241 | component: c1
242 | },
243 | {
244 | path: "/expert-advice-for-escaping-a-broken-mindset/",
245 | component: c1
246 | },
247 | {
248 | path: "/2fd-060-managing-your-own-finances-being-poor-vs-broke-investment-expenses-immigration-challenges-and-roth-401ks/",
249 | component: c1
250 | },
251 | {
252 | path: "/2fd-072-crush-debt-how-to-invest-debt-payoff-strategies-investing-vs-debt-payoff-utma-ugma-accounts/",
253 | component: c1
254 | },
255 | {
256 | path: "/2fd-073-mini-retirements-1-meals-sabbaticals-from-the-workforce-protecting-your-wealth-work-as-an-option/",
257 | component: c1
258 | },
259 | {
260 | path: "/2fd-087-debt-and-mortgage-free-in-four-years-negative-net-worth-to-750k-and-estate-planning/",
261 | component: c1
262 | },
263 | {
264 | path: "/creating-multiple-savings-accounts-to-reach-your-goals/",
265 | component: c1
266 | },
267 | {
268 | path: "/evaluating-opportunity-cost-with-business-travel/",
269 | component: c1
270 | },
271 | {
272 | path: "/2fd-079-the-adventures-around-you-debt-opportunity-cost-diy-vs-paid-services-and-house-sitting/",
273 | component: c1
274 | },
275 | {
276 | path: "/2fd-083-timeshare-exit-risks-of-timeshares-outsourcing-help-and-putting-quality-back-into-your-diet/",
277 | component: c1
278 | },
279 | {
280 | path: "/2fd-086-financially-independent-retired-early-fire-community-non-fire-neighbors-switching-to-internet-cable-tv/",
281 | component: c1
282 | },
283 | {
284 | path: "/choose-fi-your-blueprint-to-financial-independence/",
285 | component: c1
286 | },
287 | {
288 | path: "/do-it-yourself-debt-relief-options/",
289 | component: c1
290 | },
291 | {
292 | path: "/eliminating-your-mortgage-insurance-premium/",
293 | component: c1
294 | },
295 | {
296 | path: "/2fd-067-financial-fraud-who-to-trust-with-your-money-stock-market-correction-fiduciary-advisors/",
297 | component: c1
298 | },
299 | {
300 | path: "/2fd-091-find-freedom-by-learning-to-be-better-stewards-of-time-talent-and-treasures/",
301 | component: c1
302 | },
303 | {
304 | path: "/a-guide-to-living-a-life-of-frugality/",
305 | component: c1
306 | },
307 | {
308 | path: "/becoming-a-giver-while-pursuing-financial-independence/",
309 | component: c1
310 | },
311 | {
312 | path: "/building-a-kids-survival-kit-for-isolation/",
313 | component: c1
314 | },
315 | {
316 | path: "/2fd-062-maximizing-income-intentional-spending-getting-a-raise-frugal-divorce-and-personal-profit/",
317 | component: c1
318 | },
319 | {
320 | path: "/2fd-063-paying-off-student-loans-401k-early-withdrawal-concerns-frugal-internet-tv-streaming/",
321 | component: c1
322 | },
323 | {
324 | path: "/2fd-071-wall-street-life-financial-literacy-achieving-goals-faster-and-family-finance-meetings/",
325 | component: c1
326 | },
327 | {
328 | path: "/2fd-077-finding-a-fi-club-airbnbing-your-house-and-knowing-your-operating-leverage/",
329 | component: c1
330 | },
331 | {
332 | path: "/2fd-084-investment-allocation-index-funds-vs-stock-cryptocurrency-and-long-term-care-insurance/",
333 | component: c1
334 | },
335 | {
336 | path: "/all-about-buying-and-repairing-used-items/",
337 | component: c1
338 | },
339 | {
340 | path: "/auditing-your-utility-bills-to-save-money/",
341 | component: c1
342 | },
343 | {
344 | path: "/balancing-multiple-and-competing-money-goals/",
345 | component: c1
346 | },
347 | {
348 | path: "/choosing-a-mortgage-interest-rate/",
349 | component: c1
350 | },
351 | {
352 | path: "/choosing-an-airline-loyalty-program/",
353 | component: c1
354 | },
355 | {
356 | path: "/2fd-065-early-retirement-life-mindfulness-how-to-be-happy-tax-filing-tips/",
357 | component: c1
358 | },
359 | {
360 | path: "/2fd-066-full-time-traveling-cataloging-your-keepsakes-rv-living-costs-and-boondocking/",
361 | component: c1
362 | },
363 | {
364 | path: "/2fd-068-frugal-experiences-lifestyle-overhaul-free-events-and-taxes-for-giving-money/",
365 | component: c1
366 | },
367 | {
368 | path: "/2fd-069-geographic-arbitrage-retiring-aboard-managing-rental-property-remotely-and-savings-statistics/",
369 | component: c1
370 | },
371 | {
372 | path: "/2fd-074-compound-debt-payoff-side-hustles-practical-budgeting-and-frugal-lawn-care/",
373 | component: c1
374 | },
375 | {
376 | path: "/2fd-081-buy-and-hold-investing-reinventing-yourself-and-changes-to-529-plans/",
377 | component: c1
378 | },
379 | {
380 | path: "/all-about-tax-qualified-investment-options/",
381 | component: c1
382 | },
383 | {
384 | path: "/episode-list/",
385 | component: c2
386 | },
387 | {
388 | path: "/2fd-038-the-money-youre-leaving-on-the-table-with-john-wedding/",
389 | component: c1
390 | },
391 | {
392 | path: "/2fd-044-finance-nerds-unite-sharing-your-financial-journey-with-phillip-taylor/",
393 | component: c1
394 | },
395 | {
396 | path: "/2fd-046-safely-withdrawing-your-investments-in-retirement-with-early-retirement-dude/",
397 | component: c1
398 | },
399 | {
400 | path: "/2fd-070-money-for-meaning-death-regrets-breaking-fear-and-cheap-movies/",
401 | component: c1
402 | },
403 | {
404 | path: "/2fd-075-house-hacking-real-estate-investing-business-finances-and-bird-dogging/",
405 | component: c1
406 | },
407 | {
408 | path: "/2fd-078-the-startup-life-money-for-what-matters-and-hotel-alternatives/",
409 | component: c1
410 | },
411 | {
412 | path: "/2fd-082-downsizing-evaluating-investment-property-real-estate-misconceptions-and-mastermind-groups/",
413 | component: c1
414 | },
415 | {
416 | path: "/2fd-101-giving-hope-with-your-feel-good-story-of-the-day/",
417 | component: c1
418 | },
419 | {
420 | path: "/all-about-frugality-and-freelancing/",
421 | component: c1
422 | },
423 | {
424 | path: "/2fd-031-setting-up-your-frugal-kitchen-with-the-frugal-girl/",
425 | component: c1
426 | },
427 | {
428 | path: "/2fd-088-debt-collectors-credit-report-errors-identity-and-property-theft/",
429 | component: c1
430 | },
431 | {
432 | path: "/2fd-010-all-about-kids-with-our-guest-erik-olson/",
433 | component: c1
434 | },
435 | {
436 | path: "/2fd-036-blogging-as-a-side-hustle-with-j-money/",
437 | component: c1
438 | },
439 | {
440 | path: "/2fd-040-the-reasons-for-homeschooling-with-the-frugal-girl/",
441 | component: c1
442 | },
443 | {
444 | path: "/2fd-041-tapping-into-your-freelancing-potential-with-brennan-dunn/",
445 | component: c1
446 | },
447 | {
448 | path: "/2fd-053-finding-a-health-insurance-plan-that-fits-you/",
449 | component: c1
450 | },
451 | {
452 | path: "/2fd-054-saving-money-buying-selling-and-refinancing-a-home/",
453 | component: c1
454 | },
455 | {
456 | path: "/2fd-056-saving-money-the-best-way-for-your-goals/",
457 | component: c1
458 | },
459 | {
460 | path: "/2fd-064-pension-plans-calculating-retirement-frugal-valentines-day-ideas/",
461 | component: c1
462 | },
463 | {
464 | path: "/2fd-076-retirement-accounts-self-directed-iras-and-world-travel/",
465 | component: c1
466 | },
467 | {
468 | path: "/2fd-080-money-in-relationships-marriage-counseling-and-frugal-jewelry/",
469 | component: c1
470 | },
471 | {
472 | path: "/2fd-104-everything-you-need-to-know-about-fi-summit/",
473 | component: c1
474 | },
475 | {
476 | path: "/2fd-106-how-to-market-your-business-on-a-budget/",
477 | component: c1
478 | },
479 | {
480 | path: "/2fd-033-taking-the-frugal-leap-with-mrs-frugalwoods/",
481 | component: c1
482 | },
483 | {
484 | path: "/2fd-037-managing-your-personal-finances-with-mint-com/",
485 | component: c1
486 | },
487 | {
488 | path: "/2fd-042-making-major-life-changes-with-todd-nevins/",
489 | component: c1
490 | },
491 | {
492 | path: "/2fd-043-things-to-consider-about-a-college-education/",
493 | component: c1
494 | },
495 | {
496 | path: "/2fd-052-quality-of-life-before-standard-of-life/",
497 | component: c1
498 | },
499 | {
500 | path: "/2fd-055-the-spending-and-saving-habits-of-americans/",
501 | component: c1
502 | },
503 | {
504 | path: "/2fd-095-review-of-financially-stupid-people-are-everywhere/",
505 | component: c1
506 | },
507 | {
508 | path: "/2fd-105-ten-personal-finance-tips-for-technology-professionals/",
509 | component: c1
510 | },
511 | {
512 | path: "/2fd-108-how-to-survive-with-only-one-car/",
513 | component: c1
514 | },
515 | {
516 | path: "/2fd-113-the-four-keys-to-abundant-frugal-living/",
517 | component: c1
518 | },
519 | {
520 | path: "/2fd-115-10-keys-to-building-a-financial-plan/",
521 | component: c1
522 | },
523 | {
524 | path: "/2fd-004-cut-back-on-your-transportation-costs/",
525 | component: c1
526 | },
527 | {
528 | path: "/2fd-007-take-advantage-of-your-retirement-accounts/",
529 | component: c1
530 | },
531 | {
532 | path: "/2fd-034-listener-case-study-with-francis-pasket/",
533 | component: c1
534 | },
535 | {
536 | path: "/2fd-039-listener-case-study-with-aimee-knight/",
537 | component: c1
538 | },
539 | {
540 | path: "/2fd-045-listener-case-study-with-sal-hernandez/",
541 | component: c1
542 | },
543 | {
544 | path: "/2fd-051-listener-case-study-with-kyle-anderson/",
545 | component: c1
546 | },
547 | {
548 | path: "/2fd-057-getting-started-with-real-estate-investing/",
549 | component: c1
550 | },
551 | {
552 | path: "/2fd-096-coder-cruise-and-frugal-cruise-hacks/",
553 | component: c1
554 | },
555 | {
556 | path: "/2fd-097-pursuing-fire-while-traveling-full-time/",
557 | component: c1
558 | },
559 | {
560 | path: "/2fd-102-managing-your-personal-and-business-finances/",
561 | component: c1
562 | },
563 | {
564 | path: "/2fd-109-all-about-incorporating-2-frugal-dudes/",
565 | component: c1
566 | },
567 | {
568 | path: "/2019-in-review-and-the-2020-vision/",
569 | component: c1
570 | },
571 | {
572 | path: "/2fd-001-lets-start-saving-some-money/",
573 | component: c1
574 | },
575 | {
576 | path: "/2fd-011-whats-your-money-backup-plan/",
577 | component: c1
578 | },
579 | {
580 | path: "/2fd-015-you-need-an-accountability-partner/",
581 | component: c1
582 | },
583 | {
584 | path: "/2fd-016-military-finances-with-russ-gates/",
585 | component: c1
586 | },
587 | {
588 | path: "/2fd-020-unshakeable-book-study-part-1/",
589 | component: c1
590 | },
591 | {
592 | path: "/2fd-022-unshakeable-book-study-part-2/",
593 | component: c1
594 | },
595 | {
596 | path: "/2fd-023-unshakeable-book-study-part-3/",
597 | component: c1
598 | },
599 | {
600 | path: "/2fd-024-unshakeable-book-study-part-4/",
601 | component: c1
602 | },
603 | {
604 | path: "/2fd-025-unshakeable-book-study-part-5/",
605 | component: c1
606 | },
607 | {
608 | path: "/2fd-026-unshakeable-book-study-part-6/",
609 | component: c1
610 | },
611 | {
612 | path: "/2fd-028-discussing-early-retirement-with-others/",
613 | component: c1
614 | },
615 | {
616 | path: "/2fd-029-the-financial-independence-online-community/",
617 | component: c1
618 | },
619 | {
620 | path: "/2fd-048-budgeting-for-a-vacation-abroad/",
621 | component: c1
622 | },
623 | {
624 | path: "/2fd-049-alternative-investments-for-your-portfolio/",
625 | component: c1
626 | },
627 | {
628 | path: "/2fd-050-looking-back-after-one-year/",
629 | component: c1
630 | },
631 | {
632 | path: "/2fd-058-experiencing-freedom-before-financial-freedom/",
633 | component: c1
634 | },
635 | {
636 | path: "/2fd-099-live-from-fincon-pt-2/",
637 | component: c1
638 | },
639 | {
640 | path: "/2fd-103-conducting-a-personal-budget-analysis/",
641 | component: c1
642 | },
643 | {
644 | path: "/2fd-107-frugal-tips-for-tax-season/",
645 | component: c1
646 | },
647 | {
648 | path: "/2fd-111-how-we-budget-our-money/",
649 | component: c1
650 | },
651 | {
652 | path: "/2fd-116-when-public-transit-makes-sense/",
653 | component: c1
654 | },
655 | {
656 | path: "/2fd-005-thinking-before-you-buy/",
657 | component: c1
658 | },
659 | {
660 | path: "/2fd-008-get-rid-of-stuff/",
661 | component: c1
662 | },
663 | {
664 | path: "/2fd-012-vacations-on-a-budget/",
665 | component: c1
666 | },
667 | {
668 | path: "/2fd-021-credit-card-rewards-hacking/",
669 | component: c1
670 | },
671 | {
672 | path: "/2fd-032-the-psychology-of-investing/",
673 | component: c1
674 | },
675 | {
676 | path: "/2fd-047-understanding-your-credit-report/",
677 | component: c1
678 | },
679 | {
680 | path: "/2fd-090-fuel-your-entrepreneur-aspirations/",
681 | component: c1
682 | },
683 | {
684 | path: "/2fd-110-life-as-a-renter/",
685 | component: c1
686 | },
687 | {
688 | path: "/2fd-112-planning-for-senior-housing/",
689 | component: c1
690 | },
691 | {
692 | path: "/2fd-114-the-next-financial-summit/",
693 | component: c1
694 | },
695 | {
696 | path: "/2fd089-simplify-college-529-plan-savings/",
697 | component: c1
698 | },
699 | {
700 | path: "/2fd-002-budget-budget-budget/",
701 | component: c1
702 | },
703 | {
704 | path: "/2fd-003-owning-vs-renting/",
705 | component: c1
706 | },
707 | {
708 | path: "/2fd-006-health-insurance-options/",
709 | component: c1
710 | },
711 | {
712 | path: "/2fd-009-your-grocery-budget/",
713 | component: c1
714 | },
715 | {
716 | path: "/2fd-013-save-some-energy/",
717 | component: c1
718 | },
719 | {
720 | path: "/2fd-014-starting-a-business/",
721 | component: c1
722 | },
723 | {
724 | path: "/2fd-018-post-cruise-update/",
725 | component: c1
726 | },
727 | {
728 | path: "/2fd-027-surviving-early-retirement/",
729 | component: c1
730 | },
731 | {
732 | path: "/2fd-030-investing-in-yourself/",
733 | component: c1
734 | },
735 | {
736 | path: "/2fd-035-charity-and-giving/",
737 | component: c1
738 | },
739 | {
740 | path: "/2fd-092-breaking-down-bankruptcy/",
741 | component: c1
742 | },
743 | {
744 | path: "/2fd-093-peeling-back-frugality/",
745 | component: c1
746 | },
747 | {
748 | path: "/2fd-094-affordable-world-travel/",
749 | component: c1
750 | },
751 | {
752 | path: "/2fd-098-live-from-fincon/",
753 | component: c1
754 | },
755 | {
756 | path: "/2fd-100-the-100th-episode/",
757 | component: c1
758 | },
759 | {
760 | path: "/2fd-017-random-money/",
761 | component: c1
762 | },
763 | {
764 | path: "/2fd-019-choosing-insurance/",
765 | component: c1
766 | },
767 | {
768 | name: "404",
769 | path: "/404/",
770 | component: c3
771 | },
772 | {
773 | name: "home",
774 | path: "/",
775 | component: c4
776 | },
777 | {
778 | name: "*",
779 | path: "*",
780 | component: c3
781 | }
782 | ]
783 |
--------------------------------------------------------------------------------