After a multi-round interview and test, extensive pre-work, and sixteen weeks of ten hour days, weekend projects, pair programming, OCA mock exams, individual, pair, and group projects a Midterm and well over ten languages and front end framework programs covered extensively, it is debatable if the sheer amount of material, or lessons learned are greater. It is with great pride we present to you our final full stack group project, created and implemented by Alex Adkins, Brandon Stine, Kim Nettleton, and Rachel Richardson.
This application has been created with all types of outdoor enthusiasts in mind. You can share your adventures with friends or learn about a trail near you with this dynamic user-friendly application. Designed with outdoor enthusiasts in mind, TrailNutz is unique in that it is user driven. Rather than picking and choosing which information is useful from a database of outdated topographical maps, you can learn about a hike from people like you who have recently traveled the same, yet less beaten path. Aesthetic and functional, educational and useful; enjoy interacting with your friends on TrailNutz as you plan your next getaway!
Method | URI | Request Body | Response Body |
---|---|---|---|
POST | /api/register |
New User Account | Create a new User and Profile |
GET | /api/authenticate |
User Login | Validate Credentials and Log User in |
GET | /api/trail/comment/{commentId} |
Reply to a Comment | Add a response to a comment posted by another user |
POST | /api/trail/{trailId}/comment |
Add a Comment to a Trail Page | Create new comment and post it to a trail's page |
PUT | /api/trail/{trailId}/comment |
Update Comment | Edit and update comment on a trail page |
DELETE | /api/trail/{trailId}/comment/{commentId} |
Delete Comment | Remove a comment you posted |
GET | /api/trail |
List All Trails | Collection of representations of Trails |
GET | /api/trail/{trailId} |
List a Trail by Id | Single result based off of Id search |
POST | /api/trail |
Add a Trail | Create a new Single Trail |
PUT | /api/trail |
Update a Trail | Edit information for a Trail |
PUT | /api/trail/{trailId} |
Remove a Trail | Remove the record for a single trail |
DELETE | /api/traildetails/difficulty OR 'routetype' OR 'amenity' |
Include details | Retrieve various details about a Trail |
POST | /api/trail/{trailId}/trailimg |
Add Image | Add an Image to the page for a trail |
DELETE | /api/trail/{trailId}/trailimg/{trailImgId} |
Remove photo | Remove an image for a Trail |
POST | /api/trail/{trailId}/trailresources |
Add a Resource | Create a new resource for a Trail |
DELETE | /api/trail/{trailId}/trailresources/{trailResourceId} |
Remove Resource | Remove a resource for a Trail |
GET | /api/allusers |
Admin can View all Users | Admin can retrieve a list of all users |
PUT | /api/user |
Update User | User can update their information |
DELETE | /api/user/{userId} |
User has account disabled | Admin can disable any user and a user can disable their own account |
PUT | /api/user/{userId} |
Admin can enable other Users | Admin can enable access for users |
This application is built on a strong java foundation paired with JPA entity creation and mapping through a Spring REST API. This project differs from the Midterm greatly, as so much of the CRUD operation was implemented using Javascript, Angular, and TypeScript. This allowed us greater view manipulation for the user without overloading true database manipulation. Instead we relied on a disabled or enabled view for many requests. However, where necessary, users and administrators are still able to complete SQL database queries and CRUD operations. Admin and Enabled user access differ based on their level of credentials, and we are proud of this added security and credibility. An administrator is able to review activity and revise trail entries as well as user comments.
How do four people in a virtual group articulate the culmination of a truly intense program? The biggest lesson through the entire program is to never hesitate to remind yourself why you started, and remain clear on your vision of the end product. One of the biggest lessons on this project specifically is the intricate logic behind giving different users different levels of access. A unique lesson is a bit more broad than coding itself; things on the internet are rarely truly gone when you click delete. So much of what we see when using a website is based on an enabled or disabled view. This is a great reminder to be mindful of how we design websites, and also how we use them.