├── 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 | 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 | 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 | 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 | 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 | --------------------------------------------------------------------------------