Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
663e871
finished Backend....needs front end to be completed for the favorites…
K1ddSuavee Sep 3, 2025
3e5b822
Tesr Users Created
K1ddSuavee Sep 3, 2025
364fcbe
finished backend
K1ddSuavee Sep 3, 2025
18fd59f
wip(Login): Front end work for log in page
dashkendall Sep 3, 2025
c23b3f3
Merge pull request #1 from 4GeeksAcademy/main
dashkendall Sep 3, 2025
f3dff9b
feat(Login): Finished Login page
dashkendall Sep 3, 2025
bee0309
feat(app): Added CORS to connect frontend to backend
dashkendall Sep 3, 2025
ec73ce6
feat(Signup): Add signup page
dashkendall Sep 3, 2025
4bc4d9e
updated Draft of landing page
K1ddSuavee Sep 4, 2025
0860515
Need to finish my eventbrite api to update to my frontend
K1ddSuavee Sep 4, 2025
a546b75
reverting index.html and added Landing page
carlostbanks Sep 5, 2025
7edc63b
Profile page front-SI
Diponachip8 Sep 6, 2025
7305025
updated Landing page
K1ddSuavee Sep 6, 2025
d054088
matched profile front to back
Diponachip8 Sep 8, 2025
017b301
Merge pull request #2 from 4GeeksAcademy/Kelvin
Diponachip8 Sep 8, 2025
3e3f390
completing
Diponachip8 Sep 8, 2025
a3155d2
Merge remote-tracking branch 'origin' into Shahadah
Diponachip8 Sep 8, 2025
aecabfd
added token confirmation/redirection
Diponachip8 Sep 9, 2025
f99de62
Merge main to Kendall
dashkendall Sep 10, 2025
1ae0114
Updated landing layout
K1ddSuavee Sep 10, 2025
bcb1dbd
Updated Navbar of Landing.jsx
K1ddSuavee Sep 10, 2025
1847a42
Finished landing without Routes
K1ddSuavee Sep 10, 2025
55b4602
tweak(Signup/Login): Update styling to match Landing
dashkendall Sep 10, 2025
d185573
Merge branch 'Kelvin' into Kendall
dashkendall Sep 10, 2025
f61181c
Updated landing Page
K1ddSuavee Sep 10, 2025
caac126
Merge pull request #4 from 4GeeksAcademy/Kendall
dashkendall Sep 10, 2025
9f17bfd
Updated landing missing routes
K1ddSuavee Sep 11, 2025
836f1fe
Merge pull request #5 from 4GeeksAcademy/Kelvin
Diponachip8 Sep 11, 2025
4fb92c0
updated save button
Diponachip8 Sep 11, 2025
f17e9b4
Merge remote-tracking branch 'origin' into Shahadah
Diponachip8 Sep 11, 2025
a3bcc97
Removed Api and Made it a custom event creation
K1ddSuavee Sep 11, 2025
4d01a38
update complete
Diponachip8 Sep 11, 2025
3e5bc2a
Need to route Login and Sign Up Page, Also Changed Api to Custom Even…
K1ddSuavee Sep 11, 2025
ba70c4b
wip(CreateEvent): Added files for new page
dashkendall Sep 11, 2025
5fa5821
Merge pull request #6 from 4GeeksAcademy/Kendall
dashkendall Sep 11, 2025
2a8c7bf
Updated
K1ddSuavee Sep 12, 2025
86a3bd6
Merge remote-tracking branch 'origin' into Kelvin
K1ddSuavee Sep 12, 2025
d81d812
tweak(Signup): Add login link to bottom of form
dashkendall Sep 13, 2025
458b726
wip(CreateEvent): Start of Create Event page
dashkendall Sep 13, 2025
4dce66a
Corrected Signup and login page
K1ddSuavee Sep 13, 2025
8c7e313
Merge pull request #7 from 4GeeksAcademy/Kendall
K1ddSuavee Sep 13, 2025
b23e7ba
update
K1ddSuavee Sep 13, 2025
38db968
Merge remote-tracking branch 'origin' into Kelvin
K1ddSuavee Sep 13, 2025
30ae7d8
Merge pull request #8 from 4GeeksAcademy/Kelvin
K1ddSuavee Sep 13, 2025
c01c500
saving changes
Diponachip8 Sep 15, 2025
7291679
Merge remote-tracking branch 'origin' into Shahadah
Diponachip8 Sep 15, 2025
7abbf2a
Merge pull request #9 from 4GeeksAcademy/Shahadah
dashkendall Sep 15, 2025
d54b65e
updating profile styling
Diponachip8 Sep 16, 2025
32898ae
Merge remote-tracking branch 'origin' into Shahadah
Diponachip8 Sep 19, 2025
9500513
fix(CORS): Potential fix for CORS error
dashkendall Sep 20, 2025
9225d2f
fix(profile): Remove lines from my testing
dashkendall Sep 20, 2025
e5c9812
Merge pull request #10 from 4GeeksAcademy/Kendall
Diponachip8 Sep 20, 2025
54d7e27
save changes
Diponachip8 Sep 20, 2025
9d3614b
Merge pull request #11 from 4GeeksAcademy/Shahadah
K1ddSuavee Sep 20, 2025
99e3ca0
update
K1ddSuavee Sep 22, 2025
f1f00b8
Kelvin Updates
K1ddSuavee Sep 22, 2025
d0f2dd0
Updated main
K1ddSuavee Sep 22, 2025
c90e3f9
Updated Kelvin
K1ddSuavee Sep 22, 2025
03d8e2c
DashBoard,Discover,CreateEvent,Fav,RSVP
K1ddSuavee Sep 23, 2025
234b15e
Login Successful
K1ddSuavee Sep 23, 2025
24fd03c
Updated Front End
K1ddSuavee Sep 23, 2025
550ae6d
fix(CORS): Added frontend link for Hadah
dashkendall Sep 23, 2025
6a270d8
Merge pull request #12 from 4GeeksAcademy/Kendall
Diponachip8 Sep 23, 2025
00bcc72
Updated Drafts
K1ddSuavee Sep 24, 2025
b2ec4ef
Kelvin
K1ddSuavee Sep 24, 2025
13696a4
Updated
K1ddSuavee Sep 24, 2025
662f3e6
Updated
K1ddSuavee Sep 24, 2025
f26a9d2
updated
K1ddSuavee Sep 24, 2025
bc51a30
Merge remote-tracking branch 'origin' into Kelvin
K1ddSuavee Sep 25, 2025
0a1687e
Updated
K1ddSuavee Sep 25, 2025
b1bcb3a
updates
K1ddSuavee Sep 25, 2025
b652e16
Updated
K1ddSuavee Sep 25, 2025
8a994bb
Finished Site
K1ddSuavee Sep 26, 2025
5b9fefc
Updated Profile
K1ddSuavee Sep 30, 2025
caae9e4
Update Profile Page..Drawing Error code 422
K1ddSuavee Sep 30, 2025
a63d4c0
Update Profile page error code 422
K1ddSuavee Sep 30, 2025
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
17 changes: 9 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
},
"[javascriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
},
"[javascriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"githubPullRequests.ignoredPullRequestBranches": ["main"]
}
18 changes: 18 additions & 0 deletions App.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from "react";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import { Landing } from "./pages/Landing";
import { Login } from "./pages/Login";
import { Signup } from "./pages/Signup";
import "./styles.css";

export default function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Landing />} />
<Route path="/login" element={<Login />} />
<Route path="/signup" element={<Signup />} />
</Routes>
</Router>
);
}
67 changes: 67 additions & 0 deletions backend/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app, supports_credentials=True, origins="*")

# In-memory event storage for demonstration
EVENTS = [
{
"id": 1,
"title": "Mock Music Festival",
"date": "2025-09-15",
"location": "Central Park",
"description": "A fun outdoor music festival for all ages.",
"rsvp": 42,
"icon": "🎵",
},
{
"id": 2,
"title": "Tech Conference",
"date": "2025-10-01",
"location": "Convention Center",
"description": "Join the latest in tech and innovation.",
"rsvp": 87,
"icon": "💻",
},
{
"id": 3,
"title": "Art Expo",
"date": "2025-11-05",
"location": "Art Gallery",
"description": "Explore modern art from local artists.",
"rsvp": 30,
"icon": "🎨",
},
]


@app.route("/api/events", methods=["GET", "POST"])
def events():
if request.method == "POST":
data = request.json
event = {
"id": len(EVENTS) + 1,
"title": data.get("title"),
"date": data.get("date"),
"location": data.get("location"),
"description": data.get("description"),
"icon": data.get("icon", "🎉"),
"rsvp": 0,
}
EVENTS.append(event)
return jsonify(event), 201
return jsonify(EVENTS)


@app.route("/api/events/<int:event_id>/rsvp", methods=["POST"])
def rsvp(event_id):
for event in EVENTS:
if event["id"] == event_id:
event["rsvp"] += 1
return jsonify({"message": "RSVP successful", "event": event})
return jsonify({"error": "Event not found"}), 404


if __name__ == "__main__":
app.run(host="0.0.0.0", port=3001, debug=True)
Binary file added background-music.mp3
Binary file not shown.
27 changes: 27 additions & 0 deletions carousel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const events = [
{ icon: "🎵", title: "Concert Night", date: "Sep 10, 2025", rsvp: 42 },
{ icon: "🍴", title: "Foodie Meetup", date: "Sep 15, 2025", rsvp: 28 },
{ icon: "💻", title: "Tech Hackathon", date: "Sep 20, 2025", rsvp: 65 },
];

let current = 0;

function updateCarousel() {
const card = document.getElementById("carousel-card");
card.innerHTML = `
<span class="event-icon">${events[current].icon}</span>
<h4>${events[current].title}</h4>
<p>${events[current].date} • ${events[current].rsvp} RSVPs</p>
`;
}

document.getElementById("carousel-prev").onclick = function () {
current = (current - 1 + events.length) % events.length;
updateCarousel();
};
document.getElementById("carousel-next").onclick = function () {
current = (current + 1) % events.length;
updateCarousel();
};

updateCarousel();
27 changes: 21 additions & 6 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,16 +1,31 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="icon" href="/4geeks.ico" />
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN"
crossorigin="anonymous"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hello Rigo</title>
<title>E-Venture</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/front/main.jsx"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"
></script>
</body>
</html>
</html>
48 changes: 48 additions & 0 deletions migrations/versions/11c0ae10bf26_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
"""empty message

Revision ID: 11c0ae10bf26
Revises: dd5c9565f9d5
Create Date: 2025-09-03 18:21:48.921314

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '11c0ae10bf26'
down_revision = 'dd5c9565f9d5'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(sa.Column('is_verified', sa.Boolean(), nullable=True))
batch_op.alter_column('first_name',
existing_type=sa.VARCHAR(length=80),
type_=sa.String(length=120),
existing_nullable=True)
batch_op.alter_column('last_name',
existing_type=sa.VARCHAR(length=80),
type_=sa.String(length=120),
existing_nullable=True)

# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.alter_column('last_name',
existing_type=sa.String(length=120),
type_=sa.VARCHAR(length=80),
existing_nullable=True)
batch_op.alter_column('first_name',
existing_type=sa.String(length=120),
type_=sa.VARCHAR(length=80),
existing_nullable=True)
batch_op.drop_column('is_verified')

# ### end Alembic commands ###
88 changes: 88 additions & 0 deletions migrations/versions/c30bd45045f9_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
"""empty message

Revision ID: c30bd45045f9
Revises: 0763d677d453
Create Date: 2025-09-03 19:43:57.471352

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'c30bd45045f9'
down_revision = '0763d677d453'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('event',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('title', sa.String(length=120), nullable=False),
sa.Column('description', sa.Text(), nullable=True),
sa.Column('location', sa.String(length=120), nullable=False),
sa.Column('date', sa.Date(), nullable=False),
sa.Column('time', sa.Time(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('favorite',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('event_id', sa.Integer(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['event_id'], ['event.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('favorite_member',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('member_id', sa.Integer(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['member_id'], ['user.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('rsvp',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('event_id', sa.Integer(), nullable=False),
sa.Column('response', sa.String(length=10), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['event_id'], ['event.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(sa.Column('first_name', sa.String(length=120), nullable=True))
batch_op.add_column(sa.Column('last_name', sa.String(length=120), nullable=True))
batch_op.add_column(sa.Column('is_verified', sa.Boolean(), nullable=True))
batch_op.add_column(sa.Column('profile_photo', sa.String(length=255), nullable=True))
batch_op.add_column(sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True))
batch_op.add_column(sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True))

# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.drop_column('updated_at')
batch_op.drop_column('created_at')
batch_op.drop_column('profile_photo')
batch_op.drop_column('is_verified')
batch_op.drop_column('last_name')
batch_op.drop_column('first_name')

op.drop_table('rsvp')
op.drop_table('favorite_member')
op.drop_table('favorite')
op.drop_table('event')
# ### end Alembic commands ###
86 changes: 86 additions & 0 deletions migrations/versions/dd5c9565f9d5_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
"""empty message

Revision ID: dd5c9565f9d5
Revises: 0763d677d453
Create Date: 2025-09-03 17:52:43.508072

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'dd5c9565f9d5'
down_revision = '0763d677d453'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('event',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('title', sa.String(length=120), nullable=False),
sa.Column('description', sa.Text(), nullable=True),
sa.Column('location', sa.String(length=120), nullable=False),
sa.Column('date', sa.Date(), nullable=False),
sa.Column('time', sa.Time(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('favorite',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('event_id', sa.Integer(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['event_id'], ['event.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('favorite_member',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('member_id', sa.Integer(), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['member_id'], ['user.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('rsvp',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('event_id', sa.Integer(), nullable=False),
sa.Column('response', sa.String(length=10), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['event_id'], ['event.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(sa.Column('first_name', sa.String(length=80), nullable=True))
batch_op.add_column(sa.Column('last_name', sa.String(length=80), nullable=True))
batch_op.add_column(sa.Column('profile_photo', sa.String(length=255), nullable=True))
batch_op.add_column(sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True))
batch_op.add_column(sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True))

# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.drop_column('updated_at')
batch_op.drop_column('created_at')
batch_op.drop_column('profile_photo')
batch_op.drop_column('last_name')
batch_op.drop_column('first_name')

op.drop_table('rsvp')
op.drop_table('favorite_member')
op.drop_table('favorite')
op.drop_table('event')
# ### end Alembic commands ###
Loading