Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
44e9e05
[Updates clase miércoles models]
VicenteAGT Jan 21, 2026
1ebc15d
[updates]
VicenteAGT Jan 21, 2026
78257ce
[Update tablas sin relaciones]
VicenteAGT Jan 21, 2026
a1756cb
upgrade
Sebaperez12 Jan 21, 2026
f143670
[Desarrollo de ENDPOINT Login and register]
SantiagoCorales Jan 22, 2026
d3ffdd6
Merge pull request #1 from 4GeeksAcademy/SantiagoCorales-Login-Regist…
SantiagoCorales Jan 22, 2026
ca1b748
Merge pull request #2 from 4GeeksAcademy/Sebaperez12
Sebaperez12 Jan 22, 2026
d1da35d
tablas relacionadas con claves foráneas.
johnocamposabg-dev Jan 22, 2026
f59d59c
Merge pull request #3 from 4GeeksAcademy/Vicente/John---Models
VicenteAGT Jan 22, 2026
14d336e
upgrade signup
Sebaperez12 Jan 22, 2026
819e51a
adelanto en login
Sebaperez12 Jan 22, 2026
5adb053
ajuste en routes.jsx
Sebaperez12 Jan 22, 2026
0147f73
Merge pull request #4 from 4GeeksAcademy/Sebaperez12---LOGIN--SIGNUP-…
Sebaperez12 Jan 23, 2026
16b7dfa
finalización de la tabla de modelos y ajustes menores en la API
johnocamposabg-dev Jan 24, 2026
b65d549
push a migrations
johnocamposabg-dev Jan 24, 2026
6cd8248
Merge pull request #5 from 4GeeksAcademy/Vicente/John---Models
VicenteAGT Jan 24, 2026
dbc4a42
Merge pull request #6 from 4GeeksAcademy/developer
VicenteAGT Jan 24, 2026
b2e3bac
[Desarrollo de 4 endpoints en relacion estudiante
SantiagoCorales Jan 24, 2026
10b1294
Merge pull request #7 from 4GeeksAcademy/developer
SantiagoCorales Jan 24, 2026
594562e
[Adapte los endpoints de Register y Login con
SantiagoCorales Jan 24, 2026
0153932
[Endpoints de Group desarrollados]
SantiagoCorales Jan 26, 2026
0a618db
creación de endpoints
johnocamposabg-dev Jan 26, 2026
6096ea7
serialización de los modelos de la base de datos para facilitar la co…
johnocamposabg-dev Jan 26, 2026
35b02f9
Merge pull request #8 from 4GeeksAcademy/SantiagoCorales-Login-Regist…
SantiagoCorales Jan 27, 2026
11972d2
Merge pull request #9 from 4GeeksAcademy/SantiagoCorales-GroupEndpoint
SantiagoCorales Jan 27, 2026
caf43d5
Merge pull request #10 from 4GeeksAcademy/SantiagoCorales-Student-End…
SantiagoCorales Jan 27, 2026
2ac7b18
avance
johnocamposabg-dev Jan 27, 2026
78f0332
[updates]
VicenteAGT Jan 27, 2026
6c4f2e5
Merge branch 'developer' into john-endpoints-teacher
johnocamposabg-dev Jan 27, 2026
e9d8fa4
Merge pull request #11 from 4GeeksAcademy/john-endpoints-teacher
johnocamposabg-dev Jan 27, 2026
523f47f
creación del nuevo singupstaff y concexion con la api
johnocamposabg-dev Jan 27, 2026
657d52b
[updates]
VicenteAGT Jan 28, 2026
39b4687
Merge branch 'developer' into Vicente-test
VicenteAGT Jan 28, 2026
0bf2469
Merge pull request #12 from 4GeeksAcademy/Vicente-test
VicenteAGT Jan 28, 2026
3f6a934
[add Reading model in app.py]
VicenteAGT Jan 28, 2026
37bcae9
cors
johnocamposabg-dev Jan 28, 2026
8b67f22
Merge branch 'developer' into john-register-staff
johnocamposabg-dev Jan 28, 2026
a2f9fd2
Merge pull request #13 from 4GeeksAcademy/john-register-staff
johnocamposabg-dev Jan 28, 2026
f8a199b
creacion de vista creat todo form
Sebaperez12 Jan 28, 2026
b800975
[debug endpoint]
VicenteAGT Jan 28, 2026
fbd9112
correcion
Sebaperez12 Jan 28, 2026
12f8812
Merge branch 'developer' into Sebaperez-Submission-Endpoint
VicenteAGT Jan 28, 2026
e234e9d
Merge pull request #14 from 4GeeksAcademy/Sebaperez-Submission-Endpoint
VicenteAGT Jan 28, 2026
cfeaa70
eliminación de doble importación
johnocamposabg-dev Jan 28, 2026
e04bcf7
[en curso]
SantiagoCorales Jan 28, 2026
27e49ba
[API casi finalizada]
SantiagoCorales Jan 29, 2026
9cd2649
[updates by vicenteagt]
VicenteAGT Jan 29, 2026
fbbe72a
[Updates by vicenteagt]
VicenteAGT Jan 30, 2026
a493a22
[updates navbar by vicentea]
VicenteAGT Jan 30, 2026
4ef0078
ajustes
Sebaperez12 Jan 30, 2026
bd72096
Merge pull request #15 from 4GeeksAcademy/sebapere-CreateTodoForm
Sebaperez12 Jan 30, 2026
19e9c65
[fixed Signup by vicente]
VicenteAGT Jan 30, 2026
c385557
[ultimo tramo de la api de google calendar]
SantiagoCorales Jan 31, 2026
2d7ef89
Ignore package-lock.json
johnocamposabg-dev Feb 1, 2026
eb8f140
Merge pull request #16 from 4GeeksAcademy/john-landing-page-and-navbars
johnocamposabg-dev Feb 1, 2026
2d663d1
[Pruebas frontend]
SantiagoCorales Feb 1, 2026
a5b64e7
landing page and navbars
johnocamposabg-dev Feb 1, 2026
3f0d2cb
[integracion de api al backend finalizada]
SantiagoCorales Feb 2, 2026
c0f54ea
ajuste creatform todo
Sebaperez12 Feb 2, 2026
e3bce97
[fixes by vicenteagt]
VicenteAGT Feb 2, 2026
a7375fb
[Resultado final api de google calendar]
SantiagoCorales Feb 2, 2026
2188f97
Merge branch 'developer' into SantiagoCorales-API-google-calendar
SantiagoCorales Feb 2, 2026
9d01b70
Merge pull request #17 from 4GeeksAcademy/SantiagoCorales-API-google-…
SantiagoCorales Feb 2, 2026
f3620ef
leanding page and navbars style improvements
johnocamposabg-dev Feb 3, 2026
4fcd198
Merge branch 'developer' into john-landing-page-and-navbars
johnocamposabg-dev Feb 3, 2026
9c66ab4
Merge pull request #18 from 4GeeksAcademy/john-landing-page-and-navbars
johnocamposabg-dev Feb 3, 2026
74ee682
avances
Sebaperez12 Feb 3, 2026
e10a0f5
ajustes condicionales al Navbar y guardado del rol en el localStorage
johnocamposabg-dev Feb 4, 2026
5fa65e3
Merge branch 'developer' of https://github.com/4GeeksAcademy/projecto…
Sebaperez12 Feb 4, 2026
56d90d9
[Upates by vicenteagt]
VicenteAGT Feb 4, 2026
9bc9443
Merge pull request #19 from 4GeeksAcademy/vicente-readings
VicenteAGT Feb 4, 2026
2c74613
Merge branch 'developer' into john-home-teacher-and-student
johnocamposabg-dev Feb 4, 2026
8c1f37d
Merge pull request #20 from 4GeeksAcademy/john-home-teacher-and-student
johnocamposabg-dev Feb 4, 2026
64d0e23
Merge pull request #21 from 4GeeksAcademy/sebapere-CreateTodoForm
Sebaperez12 Feb 4, 2026
cbe5d55
correción de problemas
johnocamposabg-dev Feb 4, 2026
c26169e
correción de app-py
johnocamposabg-dev Feb 4, 2026
f61b1e0
[updates miércoles 4 de feb]
VicenteAGT Feb 4, 2026
4c929f0
lili
johnocamposabg-dev Feb 4, 2026
f49ee25
[login conectado del frontend al backend]
SantiagoCorales Feb 5, 2026
5f21cbc
Merge pull request #22 from 4GeeksAcademy/SantiagoCorales-LoginPage
SantiagoCorales Feb 5, 2026
81150e9
avance 1
johnocamposabg-dev Feb 5, 2026
97bc4db
[fix]
VicenteAGT Feb 5, 2026
ff22cc0
se crea la pagina de todos y individualtodo, tmb un componente q tira…
Sebaperez12 Feb 5, 2026
aecb9f5
Merge pull request #23 from 4GeeksAcademy/sebaperez-TodoViewStudent
Sebaperez12 Feb 5, 2026
7011e87
avance sobre el home student, se agrego un nuevo logo para cuando el …
johnocamposabg-dev Feb 5, 2026
66851c8
correcion navbar
johnocamposabg-dev Feb 6, 2026
3cdbfe6
avances en pagina de profesor
johnocamposabg-dev Feb 6, 2026
6d15bb1
[Updates API resend]
VicenteAGT Feb 6, 2026
1945fd0
Merge pull request #24 from 4GeeksAcademy/test-db---Vicente
VicenteAGT Feb 6, 2026
5ee846c
[Home admin finalizada]
SantiagoCorales Feb 6, 2026
0058084
corrección de lineas
johnocamposabg-dev Feb 6, 2026
2a16815
Merge branch 'developer' into john-home-teacher-and-student
johnocamposabg-dev Feb 6, 2026
4f1d44a
Merge pull request #25 from 4GeeksAcademy/john-home-teacher-and-student
johnocamposabg-dev Feb 6, 2026
3b8ac44
correccion de rutas
johnocamposabg-dev Feb 6, 2026
bb53f3f
[proceso]
SantiagoCorales Feb 7, 2026
77d3d51
[Seccion Crear Grupo Lista]
SantiagoCorales Feb 8, 2026
14725d4
Merge branch 'developer' into SantiagoCorales-Home-Admin
SantiagoCorales Feb 8, 2026
69c786c
Merge pull request #26 from 4GeeksAcademy/SantiagoCorales-Home-Admin
SantiagoCorales Feb 8, 2026
475f6e2
[arreglo de errores]
SantiagoCorales Feb 8, 2026
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 .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,5 @@ database.database
database.db
diagram.png
__pycache__/
google_credentials/

7 changes: 6 additions & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ flask-sqlalchemy = "*"
flask-migrate = "*"
flask-swagger = "*"
psycopg2-binary = "*"
python-dotenv = "*"
flask-cors = "*"
gunicorn = "*"
cloudinary = "*"
Expand All @@ -20,6 +19,12 @@ typing-extensions = "*"
flask-jwt-extended = "==4.6.0"
wtforms = "==3.1.2"
sqlalchemy = "*"
google-auth = "*"
google-api-python-client = "*"
google-auth-oauthlib = "*"
requests-oauthlib = "*"
python-dotenv = "*"
resend = "*"

[requires]
python_version = "3.13"
Expand Down
440 changes: 433 additions & 7 deletions Pipfile.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hello Rigo</title>
</head>
<body>
<div id="root"></div>
<body class="min-vh-100">
<div class="d-flex flex-column min-vh-100" id="root"></div>
<script type="module" src="/src/front/main.jsx"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
Expand Down
37 changes: 37 additions & 0 deletions migrations/versions/9bef3b5ac0da_add_google_token_table.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""add google token table

Revision ID: 9bef3b5ac0da
Revises: d3c003d31458
Create Date: 2026-01-30 21:26:15.162628

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '9bef3b5ac0da'
down_revision = 'd3c003d31458'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('google_token',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('access_token', sa.String(length=500), nullable=False),
sa.Column('refresh_token', sa.String(length=500), nullable=False),
sa.Column('token_expiry', sa.DateTime(), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('user_id')
)
# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('google_token')
# ### end Alembic commands ###
127 changes: 127 additions & 0 deletions migrations/versions/c548e76fcf8f_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
"""empty message
Revision ID: c548e76fcf8f
Revises: 0763d677d453
Create Date: 2026-01-24 00:01:36.030136
"""
from alembic import op
import sqlalchemy as sa


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


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
# Create ENUM types
role_enum = sa.Enum('ADMIN', 'TEACHER', 'STUDENT', name='role_enum')
role_enum.create(op.get_bind(), checkfirst=True)

op.create_table('group',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=50), nullable=False),
sa.Column('description', sa.String(
length=255), nullable=False),
sa.Column('admin_id', sa.Integer(), nullable=False),
sa.Column('teacher_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['admin_id'], ['user.id'], ),
sa.ForeignKeyConstraint(['teacher_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)
op.create_table('reading',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('title', sa.String(length=100), nullable=False),
sa.Column('content', sa.String(
length=1000), nullable=False),
sa.Column('teacher_id', sa.Integer(), nullable=False),
sa.Column('group_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['group.id'], ),
sa.ForeignKeyConstraint(['teacher_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('student_group',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('group_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['group.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('todo',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('title', sa.String(length=100), nullable=False),
sa.Column('description', sa.String(
length=255), nullable=False),
sa.Column('due_date', sa.Date(), nullable=False),
sa.Column('teacher_id', sa.Integer(), nullable=False),
sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('student_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['group_id'], ['group.id'], ),
sa.ForeignKeyConstraint(
['student_id'], ['student_group.id'], ),
sa.ForeignKeyConstraint(['teacher_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('submission',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('description', sa.String(
length=255), nullable=False),
sa.Column('response_url', sa.String(
length=300), nullable=False),
sa.Column('todo_id', sa.Integer(), nullable=False),
sa.Column('student_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(
['student_id'], ['student_group.id'], ),
sa.ForeignKeyConstraint(['todo_id'], ['todo.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('status',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('submission_id', sa.Integer(), nullable=False),
sa.Column('state', sa.Enum('PENDING', 'APPROVED',
'REJECTED', name='status_enum'), nullable=False),
sa.Column('feedback', sa.String(
length=255), nullable=False),
sa.Column('teachers_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(
['submission_id'], ['submission.id'], ),
sa.ForeignKeyConstraint(['teachers_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(
sa.Column('name', sa.String(length=50), nullable=False))
batch_op.add_column(sa.Column('role', sa.Enum(
'ADMIN', 'TEACHER', 'STUDENT', name='role_enum'), nullable=False))

# ### 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('role')
batch_op.drop_column('name')

op.drop_table('status')
op.drop_table('submission')
op.drop_table('todo')
op.drop_table('student_group')
op.drop_table('reading')
op.drop_table('group')

# Drop ENUM types
role_enum = sa.Enum('ADMIN', 'TEACHER', 'STUDENT', name='role_enum')
role_enum.drop(op.get_bind(), checkfirst=True)

status_enum = sa.Enum('PENDING', 'APPROVED',
'REJECTED', name='status_enum')
status_enum.drop(op.get_bind(), checkfirst=True)
op.drop_table('group')
# ### end Alembic commands ###
38 changes: 38 additions & 0 deletions migrations/versions/d3c003d31458_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""empty message
Revision ID: d3c003d31458
Revises: c548e76fcf8f
Create Date: 2026-01-24 00:17:59.409895
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'd3c003d31458'
down_revision = 'c548e76fcf8f'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('status', schema=None) as batch_op:
batch_op.add_column(sa.Column('teacher_id', sa.Integer(), nullable=False))
batch_op.drop_constraint(batch_op.f('status_teachers_id_fkey'), type_='foreignkey')
batch_op.create_foreign_key(None, 'user', ['teacher_id'], ['id'])
batch_op.drop_column('teachers_id')

# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('status', schema=None) as batch_op:
batch_op.add_column(sa.Column('teachers_id', sa.INTEGER(), autoincrement=False, nullable=False))
batch_op.drop_constraint(None, type_='foreignkey')
batch_op.create_foreign_key(batch_op.f('status_teachers_id_fkey'), 'user', ['teachers_id'], ['id'])
batch_op.drop_column('teacher_id')

# ### end Alembic commands ###
Loading