Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Final Submission - Adelynn Martin, David Rosenstein, and Colin Mettler #37

Open
wants to merge 55 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f25f71a
added proposal
mineawesomeman Sep 29, 2023
74db789
initial files
mineawesomeman Oct 3, 2023
6d15b5b
used the vite starter code
mineawesomeman Oct 4, 2023
102679b
pakcage
mineawesomeman Oct 4, 2023
4975c87
Merge pull request #1 from mineawesomeman/map
mineawesomeman Oct 4, 2023
62ca63f
setup express and vite-express
mineawesomeman Oct 4, 2023
ea72306
Merge pull request #2 from mineawesomeman/map
mineawesomeman Oct 4, 2023
91d152c
Update server.js
abmartin25 Oct 5, 2023
8b71950
Update package.json
abmartin25 Oct 5, 2023
38e565e
Update server.js Oauth
abmartin25 Oct 6, 2023
6987bdd
maps maps maps
mineawesomeman Oct 6, 2023
564a1d2
Create LoginComponent.jsx
abmartin25 Oct 8, 2023
d51f7c7
Update App.jsx
abmartin25 Oct 8, 2023
a4b6a00
Update server.js
abmartin25 Oct 8, 2023
adb5bcc
Update .gitignore
abmartin25 Oct 8, 2023
6264939
Create .env
abmartin25 Oct 8, 2023
6922d72
Update server.js
abmartin25 Oct 8, 2023
455a5af
Update server.js
abmartin25 Oct 8, 2023
1930ee2
Update server.js
abmartin25 Oct 8, 2023
56802a1
chatroom (not working)
Colinm1215 Oct 8, 2023
fb5715b
chatroom structure (WORKING)
Colinm1215 Oct 8, 2023
2f8a3e5
Merge branch 'chatroom' into dbfunctions
Colinm1215 Oct 8, 2023
84a8431
Update http_server.js
Colinm1215 Oct 8, 2023
12e5d17
Revert "Merge branch 'chatroom' into dbfunctions"
Colinm1215 Oct 8, 2023
e7173ec
Merge branch 'dbfunctions' into chatroom
Colinm1215 Oct 8, 2023
9d099cd
merge db into chat
Colinm1215 Oct 8, 2023
7e1f697
pop ups yippee
mineawesomeman Oct 9, 2023
fe593e0
chatroom - login integration
Colinm1215 Oct 10, 2023
0c912b0
renamed the element i made
mineawesomeman Oct 10, 2023
8538829
Merge pull request #4 from mineawesomeman/chatroom
mineawesomeman Oct 10, 2023
5ab7c24
Merge branch 'main' into map
mineawesomeman Oct 10, 2023
1d53f49
implemented the chat into the map
mineawesomeman Oct 10, 2023
0c8d17f
Merge pull request #6 from mineawesomeman/map
mineawesomeman Oct 10, 2023
e4d389c
-tested user functions to data base, works for postgres
abmartin25 Oct 11, 2023
2135840
User add functions debugged
abmartin25 Oct 11, 2023
1939a53
database is postgres and logout
abmartin25 Oct 11, 2023
68a8e0d
Merge pull request #7 from mineawesomeman/amBugFix
abmartin25 Oct 11, 2023
7836b14
Update Chat.jsx
abmartin25 Oct 12, 2023
d021f6d
Update http_server.js
abmartin25 Oct 12, 2023
03d11c9
Update README.md
abmartin25 Oct 12, 2023
4de954c
Update README.md
abmartin25 Oct 12, 2023
6d169e2
Update README.md
abmartin25 Oct 12, 2023
4f0b88e
Update Chat.jsx
Colinm1215 Oct 12, 2023
af8f967
Merge branch 'db-fix' of https://github.com/mineawesomeman/final_proj…
Colinm1215 Oct 12, 2023
19cc5c5
Update Chat.jsx
Colinm1215 Oct 12, 2023
142bd59
raspi changes
mineawesomeman Oct 13, 2023
01b2f0a
Update http_server.js
Colinm1215 Oct 13, 2023
ef53bc3
yippeeee
mineawesomeman Oct 13, 2023
7d285c4
Merge pull request #8 from mineawesomeman/db-fix
mineawesomeman Oct 13, 2023
3a00462
added my contributions
mineawesomeman Oct 13, 2023
4ef7775
got the favicon working lol
mineawesomeman Oct 13, 2023
a7d51af
Merge pull request #9 from mineawesomeman/db-fix
mineawesomeman Oct 13, 2023
b1083e6
added link
mineawesomeman Oct 13, 2023
7efcd9d
added video link
mineawesomeman Oct 13, 2023
29d3dbf
Update README.md
Colinm1215 Oct 13, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
GITHUB_CLIENT_SECRET=00e79e25b8ab17abf8f6794d6d622802de442857
NODE_ENV=production
20 changes: 20 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
settings: { react: { version: '18.2' } },
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.env
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
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)*
GoatChats README
Project Description

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.
This project is a real-time chat application that allows users to join different chat rooms and engage in conversations. The application is built using React for the frontend and Node.js for the backend, providing a seamless and interactive user experience. You can access the project here.

## General description
Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:
The application features a login component, a selection page for chat rooms, and the chat interface itself. Users can select a chat room of their choice and start chatting instantly. The chat messages are rendered in real-time, and the application also supports fetching historical messages.
Additional Instructions

- 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.
To fully utilize this project, you'll need to log in using GitHub OAuth. Once logged in, you'll be redirected to the selection page where you can choose a chat room to join. You must hit the submit button to send a message
Technologies Used

## 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.
React: Used for building the frontend, particularly the chat interface and room selection.
Node.js: Backend logic, including real-time message handling.
Socket.io: For real-time communication between the client and server.
GitHub OAuth: For user authentication.
Pigeon Maps: React map without external dependency

### Deliverables
Challenges Faced

#### 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.
One of the most challenging aspects was implementing real-time messaging while also fetching historical messages. This required a deep understanding of both frontend and backend technologies, as well as real-time communication protocols. Another challenge was managing state in React, especially when dealing with real-time updates.
Group Members' Responsibilities

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.
David: Created the interactive map and hosted the server.
Colin: Created the chatroom and http server/websocket logic
Addy: Implemented user authentication and backend logic

#### 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.
Project Video https://youtu.be/xLmlKp6n8_o

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.
You can view a demo of the project at http://66.189.31.92:3000.
Loading