Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
54e5f38
Adding initial code structure
Colb131 Oct 9, 2022
16733c7
code structure and mongo Manager
Oct 9, 2022
0e859bf
Adding testing for filters
Colb131 Oct 9, 2022
b782eca
Updated Climb
Colb131 Oct 9, 2022
c288afe
base server & fixed webpack loading issue
Oct 9, 2022
3a12d21
Added climb type parser
Colb131 Oct 9, 2022
5894a1b
added get routes request
Oct 9, 2022
1768166
Merge branch 'main' of https://github.com/TravisThomp/final_project
Colb131 Oct 9, 2022
facb965
Fixed the grade filter
Colb131 Oct 9, 2022
0843f60
Fixed undefined error
Colb131 Oct 9, 2022
2553268
Added AdminPage html
Colb131 Oct 9, 2022
6c7af54
post add route
Oct 9, 2022
8e9aa2e
webpack build update & code restructe
Oct 9, 2022
dce283c
remove route request
Oct 9, 2022
ae2be70
get all routes puts data in Climb Objects
Oct 9, 2022
451d59d
Added table
Colb131 Oct 9, 2022
a266f01
added return in removeRoute
Oct 9, 2022
fa4a29c
section coloring
Oct 9, 2022
2aa3e3b
fixed addRoute not using route passed in
Oct 9, 2022
bb81781
added updateHighlightSections
Oct 9, 2022
10d61c6
Added script edits
Colb131 Oct 10, 2022
21b740c
Merge branch 'main' of https://github.com/TravisThomp/final_project i…
Oct 10, 2022
99f0b51
Add works now
Colb131 Oct 10, 2022
0419423
Added apply button and stub
Colb131 Oct 10, 2022
547c5fc
added moved scriptjs code
Oct 10, 2022
190b941
added moved scriptjs code
Oct 10, 2022
7168c88
Added select for climbType, added toUpperCase
Colb131 Oct 10, 2022
937257f
broken code
Oct 10, 2022
8c92d59
merge
Oct 10, 2022
d03b7d7
grade options population and filtering of climbs array
Oct 10, 2022
617f0e9
grammar
Oct 10, 2022
7566d39
Added apply
Colb131 Oct 11, 2022
c92a724
Added bootstrap
Colb131 Oct 12, 2022
7206341
fixed climb type filter
Oct 12, 2022
863b76f
updated section highlight color
Oct 12, 2022
f7ae80d
Added more structure
Colb131 Oct 12, 2022
322a98d
Fixing merge conflict
Colb131 Oct 12, 2022
d7bb46e
Table works now
Colb131 Oct 12, 2022
3966a2e
svg with all sections, handling of sections in hightlight
Oct 12, 2022
5ab4009
Added checking on Admin page
Colb131 Oct 12, 2022
cbd1ac4
fixed svg color resetting to white
Oct 12, 2022
e00e544
svg on admin page
Oct 12, 2022
1879311
Make select auto populate
Colb131 Oct 13, 2022
1fbbd9d
Trying to read CSV
Colb131 Oct 13, 2022
c6e298b
Changing readCSV
Colb131 Oct 13, 2022
011f0f2
Added favicon
Colb131 Oct 13, 2022
c169286
removed console logs
Oct 13, 2022
f94a179
finalized svg and colors
Oct 13, 2022
9bef162
fixed merge errors
Oct 13, 2022
7b32be5
fixed favicon location :/
Oct 13, 2022
980bf8b
Added Section hover and fixed sorting
Oct 13, 2022
88a29dc
Readme done besides like to video
Colb131 Oct 13, 2022
d99a281
Update README.md
TravisThomp Oct 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
MONGODB_USER=tester
MONGODB_PASS=tester123
MONGODB_HOST="cluster0.ulx2a2w.mongodb.net"
5 changes: 5 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/final_project.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

60 changes: 20 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,29 @@
# Final Project
*Due October 13th (final day of the term)*
#Interactive Climbing Gym Map
Created by: Travis Thompson + Colby Frechette

For your final project, you'll implement a web application that exhibits understanding of the course materials.
This project should provide an opportunity to both be creative and to pursue individual research and learning goals.
Website Link:
http://142.93.202.135/

## General description
Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:
Video Link:
https://www.youtube.com/watch?v=YD8O8OOUIMM

- Static web page content and design. You should have a project that is accessible, easily navigable, and features significant content.
- Dynamic behavior implemented with JavaScript (TypeScript is also allowed if your group wants to explore it).
- Server-side programming *using Node.js*. Typically this will take the form of some sort of persistent data (database), authentication, and possibly server-side computation.
- A video (less than five minutes) where each group member explains some aspect of the project. An easy way to produce this video is for you all the groups members to join a Zoom call that is recorded; each member can share their screen when they discuss the project or one member can "drive" the interface while other members narrate (this second option will probably work better.) The video should be posted on YouTube or some other accessible video hosting service. Make sure your video is less than five minutes, but long enough to successfully explain your project and show it in action. There is no minimum video length.
For this project, we created an interactive climbing gym map to display where climbs exist in a gym. Currently, most climbing gyms have no indication of where certain grades are located in a gym, leaving a climber to wander around looking for climbs they would like to try. With our program, route setters can add climbs to the database with the admin page, and climbers can easily find the climbs they want to try with a multitude of actions. Hovering over sections as well as utilizing filters can be used to locate climbs, allowing the user to find the type of climb they would like to try, as well as the grade.

## Project ideation
Excellent projects typically serve someone/some group; for this assignment you need to define your users and stakeholders. I encourage you to identify projects that will have impact, either artistically, politically, or in terms of productivity.
This program is intended for use for Central Rock Gym in Worcester, where we both climb regularly. By combining the different techniques we have learned in class, we have created a robust, visually appealing, and useful program that allows us to see the climbs. In the future, we plan on expanding this project and potentially working with CRG to implement it into their gym ecosystem.

### Deliverables
There should be no additional information needed, other than a basic knowledge of climbing, which can be found here: https://en.wikipedia.org/wiki/Climbing.

#### Form Team (due 9/25)
Students are will work in teams of 3-5 students for the project; teams of two can be approved with the permission of the instructor. Working in teams should help enable you to build a good project in a limited amount of time. Use the `#project-logistics` channel in Discord to pitch ideas for final projects and/or find fellow team members as needed.
We used the following technologies:
- Bootstrap - a CSS framework to make the app visually appealing
- Node.js - for managing the server
- d3 - for displaying the map
- Express - for server management
- mongoDB - for persistent data storage

Teams must be in place by end of day on Sunday, September 25th. If you have not identified a team at this point, you will be assigned a team. You will be given some class time on Monday to work on your proposal, but please plan on reserving additional time outside of class as needed.
We faced relatively few challenges (other than time from other class schedules), however some included, hosting the server, sorting data, needing to manually write down all the climbs in the gym (yes, it is accurate to CRG right now, if you have not been, we recommend visting!).

#### Proposal (due 9/27)
Provide an outline of your project direction and the names of associated team members.
The outline should have enough detail so that staff can determine if it meets the minimum expectations, or if it goes too far to be reasonable by the deadline. Please include a general description of a project, and list of key technologies/libraries you plan on using (e.g. React, Three.js, Svelte, TypeScript etc.). Two to four paragraps should provide enough level of detail. Name the file proposal.md and submit a pull request by Tuesday, September 27th at 11:59 PM (end of day). Only one pull request is required per team.
Travis - Server hosting, d3 visualization and svg creation, mongoDB setup.
Colby - HTML base, Javascript logic, and CSS styling, ideation, README.
Both - we worked together often to help eachother through the struggles we had along the way, and played to our strengths when one of us was not familiar with a technology that the other was.

There are no other scheduled checkpoints for your project.

#### Turning in Your Project
Submit a second PR on the final project repo to turn in your app and code. Again, only one pull request per team.

Deploy your app, in the form of a webpage, to Glitch/Heroku/Digital Ocean or some other service; it is critical that the application functions correctly wherever you post it.

The README for your second pull request doesn’t need to be a formal report, but it should contain:

1. A brief description of what you created, and a link to the project itself (two paragraphs of text)
2. Any additional instructions that might be needed to fully use your project (login information etc.)
3. An outline of the technologies you used and how you used them.
4. What challenges you faced in completing the project.
5. What each group member was responsible for designing / developing.
6. A link to your project video.

Think of 1,3, and 4 in particular in a similar vein to the design / tech achievements for A1—A4… make a case for why what you did was challenging and why your implementation deserves a grade of 100%.

## FAQs

- **Can I use XYZ framework?** You can use any web-based frameworks or tools available, but for your server programming you need to use Node.js. Your client-side scripting language should be either JavaScript or TypeScript.
We really enjoyed this project and wish we had more time to work on it and make it better.
73 changes: 73 additions & 0 deletions bundler/webpack.common.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCSSExtractPlugin = require('mini-css-extract-plugin')
const path = require('path')

module.exports = {
entry: {
main: path.resolve(__dirname, '../src/main/script.js'),
admin: path.resolve(__dirname, '../src/admin/admin.js')
},
output:
{
hashFunction: 'xxhash64',
filename: 'bundle.[contenthash].js',
path: path.resolve(__dirname, '../public')
},
devtool: 'source-map',
plugins:
[
new CopyWebpackPlugin({
patterns: [
{ from: path.resolve(__dirname, '../static') }
]
}),
new HtmlWebpackPlugin({
template: path.resolve(__dirname, '../src/main/index.html'),
filename: "index.html",
chunks: ["main"],
minify: true
}),
new HtmlWebpackPlugin({
template: path.resolve(__dirname, '../src/admin/adminPage.html'),
filename: "adminPage.html",
chunks: ["admin"],
minify: true
}),
new MiniCSSExtractPlugin()
],
module:
{
rules:
[
// HTML
{
test: /\.(html)$/,
use:
[
'html-loader'
]
},

// JS
{
test: /\.js$/,
exclude: /node_modules/,
use:
[
'babel-loader'
]
},

// CSS
{
test: /\.css$/,
use:
[
MiniCSSExtractPlugin.loader,
'css-loader'
]
}
]
}
}
49 changes: 49 additions & 0 deletions bundler/webpack.dev.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
const path = require('path')
const { merge } = require('webpack-merge')
const commonConfiguration = require('./webpack.common.js')
const ip = require('internal-ip')
const portFinderSync = require('portfinder-sync')

const infoColor = (_message) =>
{
return `\u001b[1m\u001b[34m${_message}\u001b[39m\u001b[22m`
}

module.exports = merge(
commonConfiguration,
{
stats: 'errors-warnings',
mode: 'development',
devServer:
{
host: 'local-ip',
port: portFinderSync.getPort(8080),
open: true,
https: false,
allowedHosts: 'all',
hot: false,
watchFiles: ['src/**', 'static/**'],
static:
{
watch: true,
directory: path.join(__dirname, '../static')
},
client:
{
logging: 'none',
overlay: true,
progress: false
},
onAfterSetupMiddleware: function(devServer)
{
const port = devServer.options.port
const https = devServer.options.https ? 's' : ''
const localIp = ip.v4.sync()
const domain1 = `http${https}://${localIp}:${port}`
const domain2 = `http${https}://localhost:${port}`

console.log(`Project running at:\n - ${infoColor(domain1)}\n - ${infoColor(domain2)}`)
}
}
}
)
14 changes: 14 additions & 0 deletions bundler/webpack.prod.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const { merge } = require('webpack-merge')
const commonConfiguration = require('./webpack.common.js')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')

module.exports = merge(
commonConfiguration,
{
mode: 'production',
plugins:
[
new CleanWebpackPlugin()
]
}
)
15 changes: 15 additions & 0 deletions node_modules/.bin/acorn

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/acorn.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions node_modules/.bin/acorn.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/ansi-html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/ansi-html.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions node_modules/.bin/ansi-html.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/browserslist

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/browserslist.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading