Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
d558142
añadi las migraciones al gitignore que no estaban
jaem0699 Aug 28, 2026
8b04907
Merge pull request #1 from 4GeeksAcademy/feature/gitignore
Krisor1986 Aug 31, 2026
e700ebc
registro e inicio de sesion terminado
jaem0699 Sep 2, 2026
2e53a4e
inicio de sesion y registro terminados
jaem0699 Sep 2, 2026
3658a15
docs: define MVP architecture and database model
Sep 9, 2026
b4ea175
docs: model plan selection and trial onboarding
Sep 9, 2026
1d6bef0
docs: add Instagram conversation channel
Sep 9, 2026
ca47d06
feat: implement ClientFlow SQLAlchemy data models
Sep 9, 2026
ee79a4c
Merge pull request #16 from 4GeeksAcademy/docs/mvp-architecture
SiiNNNN Sep 9, 2026
a3972cf
fix: integrate Flask backend into existing src app, add health check …
SiiNNNN Sep 9, 2026
74dc54c
Merge pull request #40 from 4GeeksAcademy/feature/backend-endpoint
Krisor1986 Sep 9, 2026
c259488
feat: extend operational database model
Sep 9, 2026
765a871
test: validate operational model structure
Sep 9, 2026
e81594b
Merge pull request #41 from 4GeeksAcademy/20-model-02-extend-the-oper…
jaem0699 Sep 9, 2026
6b5f4d8
Merge branch 'develop' of https://github.com/4GeeksAcademy/ClientFlow…
jaem0699 Sep 9, 2026
a76aef9
correcion en el auth ui
jaem0699 Sep 9, 2026
7da6182
correccion, commit anterior
jaem0699 Sep 10, 2026
4f37fe1
correciones listas
jaem0699 Sep 14, 2026
6802cce
Merge pull request #15 from 4GeeksAcademy/feature/auth-ui
SiiNNNN Sep 14, 2026
60360f6
documentacion dashboard lista
jaem0699 Sep 14, 2026
c7411fa
Merge pull request #44 from 4GeeksAcademy/feature/dashboard-front
SiiNNNN Sep 14, 2026
a27b974
feat(auth): implement authentication API and verified tenant context …
Sep 14, 2026
d80e895
fix(auth): preserve timezone when checking session expiry
Sep 14, 2026
cd844f7
Merge pull request #45 from 4GeeksAcademy/feature/auth-api-22
SiiNNNN Sep 14, 2026
159738f
KPIcards listas ticket 13
jaem0699 Sep 14, 2026
b592293
correciones listas ticket 13
jaem0699 Sep 14, 2026
ab0351e
correcciones listas 2
jaem0699 Sep 14, 2026
ec0e20c
Merge pull request #46 from 4GeeksAcademy/feature/dashboard-front2
Krisor1986 Sep 14, 2026
4b1c978
ticket 14 listo
jaem0699 Sep 14, 2026
528a46e
Merge pull request #47 from 4GeeksAcademy/feature/interactive-dashboa…
SiiNNNN Sep 14, 2026
0a5c73f
complete leads endpoints
SiiNNNN Sep 15, 2026
2467bac
Merge pull request #48 from 4GeeksAcademy/feature/leads-endpoints
jaem0699 Sep 16, 2026
3378718
leads/Ticket 8 listo y sidebar implementado
jaem0699 Sep 16, 2026
627d820
Merge remote-tracking branch 'origin/develop' into feature/interactiv…
jaem0699 Sep 16, 2026
7895e66
test: protect critical business rules
SiiNNNN Sep 16, 2026
c8f46fb
Merge pull request #49 from 4GeeksAcademy/feature/interactive-lead-de…
jaem0699 Sep 16, 2026
3ad96b8
Merge pull request #50 from 4GeeksAcademy/feature/leads-endpoints
jaem0699 Sep 16, 2026
fa61004
jobs listo ticket 10
jaem0699 Sep 16, 2026
0a83912
Merge pull request #51 from 4GeeksAcademy/feature/interactive-job-wor…
SiiNNNN Sep 16, 2026
4b3cd21
ticket 9 listo clientes
jaem0699 Sep 16, 2026
e2c2f05
Merge pull request #52 from 4GeeksAcademy/feature/client-details-next…
SiiNNNN Sep 17, 2026
be80cd4
fix: correct lead validation and conversion activity
SiiNNNN Sep 17, 2026
c0edd6d
Merge pull request #53 from 4GeeksAcademy/bugfix/fix-leads-tests
SiiNNNN Sep 18, 2026
b66de44
wip: add client api endpoints
SiiNNNN Sep 18, 2026
a8f67aa
ticket 11 listo vista de agenda y algunas correcciones
jaem0699 Sep 18, 2026
f2f2cec
feat(onboarding): preserve plans listing and selection progress
Sep 18, 2026
a87ce28
Merge remote-tracking branch 'origin/develop' into feature/onboarding-24
Sep 18, 2026
f4d16fd
feat(onboarding): complete trial and simulated payment registration
Sep 19, 2026
d7dc076
fix(onboarding): clarify registration action and retry contrast
Sep 19, 2026
e81816b
Merge pull request #55 from 4GeeksAcademy/feature/onboarding-24
jaem0699 Sep 19, 2026
98bab87
reparar
jaem0699 Sep 19, 2026
e0f5d86
fix(agenda): complete calendar views, localization and appointment na…
Sep 19, 2026
483866e
fix(agenda): link every demo appointment to an existing job
Sep 19, 2026
5e54f35
Merge pull request #54 from 4GeeksAcademy/feature/interactive-calendar
Krisor1986 Sep 19, 2026
b9761e8
feat(inbox): register conversation API blueprint
Sep 19, 2026
4092de8
Merge remote-tracking branch 'origin/develop' into feature/inbox-27
Sep 19, 2026
1bca526
feat(inbox): add tenant-scoped conversations and message inbox
Sep 20, 2026
0614578
feat: implement team invitations and membership management (#21)
Sep 20, 2026
40b9422
Merge pull request #56 from 4GeeksAcademy/feature/inbox-27
SiiNNNN Sep 20, 2026
2d7197e
Merge develop after PR #56; preserve inbox and team routes
Sep 20, 2026
fac56e6
Merge pull request #57 from 4GeeksAcademy/feature/members-21
SiiNNNN Sep 20, 2026
ab9db63
feat: implement company knowledge ingestion and document management
Sep 21, 2026
21e986e
Merge pull request #58 from 4GeeksAcademy/feature/knowledge-31
jaem0699 Sep 21, 2026
7af648f
ticket 28
jaem0699 Sep 21, 2026
0dde88c
Merge remote-tracking branch 'origin/develop' into AGENDA-API-01
jaem0699 Sep 21, 2026
1a5d6b6
Merge pull request #59 from 4GeeksAcademy/AGENDA-API-01
jaem0699 Sep 22, 2026
b21eee5
fix(agenda): validate bookings and support Codespaces API access
Sep 22, 2026
0920454
pull
jaem0699 Sep 23, 2026
0b21c85
Merge pull request #60 from 4GeeksAcademy/fix/agenda-28
jaem0699 Sep 23, 2026
f462b84
Merge remote-tracking branch 'origin/develop' into feature/client-api-01
SiiNNNN Sep 23, 2026
2bae6d8
feat: add client related resource endpoints
SiiNNNN Sep 23, 2026
d9d78fa
WIP: ANTES DE CAMBIAR IMPORT CONTEXT
SiiNNNN Sep 23, 2026
c98848f
Merge remote-tracking branch 'origin/develop' into feature/client-api-01
SiiNNNN Sep 23, 2026
a06aa53
feat(ai): add tenant-scoped RAG drafts and human approval
Sep 23, 2026
15eb5b4
Merge pull request #61 from 4GeeksAcademy/feature/ai-32
SiiNNNN Sep 24, 2026
8b9cd71
feat(channels): add tenant-scoped web chat and email configuration
Sep 24, 2026
d89897c
Merge pull request #62 from 4GeeksAcademy/feature/channels-30
SiiNNNN Sep 24, 2026
f8d40ca
fix(ui): improve agents page contrast and layout
Sep 24, 2026
42d220c
Merge pull request #63 from 4GeeksAcademy/fix/agents-page-layout
jaem0699 Sep 24, 2026
e9eac06
fix(ai): support natural conversations with stateless inference
Sep 25, 2026
f8ab103
complete client API and UI integration
SiiNNNN Sep 25, 2026
48f98b1
Merge pull request #64 from 4GeeksAcademy/fix/ai-platform-access
SiiNNNN Sep 25, 2026
4318008
haciendo pull
jaem0699 Sep 25, 2026
d57e09f
Merge remote-tracking branch 'origin/develop' into I18N-01
jaem0699 Sep 25, 2026
524df3b
Merge remote-tracking branch 'origin/develop' into feature/client-api-01
Sep 25, 2026
d6e7573
fix(clients): align API connection and complete client listing
Sep 25, 2026
09d79dc
pull 2
jaem0699 Sep 25, 2026
3741865
Merge pull request #65 from 4GeeksAcademy/feature/client-api-01
Krisor1986 Sep 25, 2026
c468706
merge: resolve plans branch conflict with develop
Sep 25, 2026
dd84ec3
Merge pull request #66 from 4GeeksAcademy/I18N-01
Krisor1986 Sep 26, 2026
94edc24
ci: add pull request quality checks for develop
Krisor1986 Sep 26, 2026
593a5ed
fix(security): restrict plan seeding and keep client avatars local
Sep 27, 2026
c4188cb
docs: document setup, API and demo walkthrough in English and Spanish
Sep 27, 2026
425606b
Merge pull request #67 from 4GeeksAcademy/feature/ci-34
SiiNNNN Sep 27, 2026
fa50174
Merge remote-tracking branch 'origin/develop' into feature/security-36
Sep 27, 2026
4b23d8d
Merge pull request #68 from 4GeeksAcademy/feature/security-36
jaem0699 Sep 27, 2026
6b8f126
Merge remote-tracking branch 'origin/develop' into feature/docs-37
Sep 27, 2026
e6432a0
fix: restore protected browser-based plan seeding
Sep 27, 2026
0942a7f
Merge pull request #70 from 4GeeksAcademy/fix/browser-seed-plans
jaem0699 Sep 27, 2026
dfd4862
Merge remote-tracking branch 'origin/develop' into feature/docs-37
Sep 27, 2026
aa67bf0
docs: align setup instructions with integrated browser seeding
Sep 27, 2026
6c584d5
Merge pull request #69 from 4GeeksAcademy/feature/docs-37
jaem0699 Sep 27, 2026
0b668b7
feat(db): add reproducible initial schema migration
Sep 27, 2026
d937139
style(db): remove generated migration trailing whitespace
Sep 27, 2026
c55c4e9
Merge pull request #71 from 4GeeksAcademy/feature/db-17-reproducible
jaem0699 Sep 27, 2026
36d473c
Job api 01, endpoints de jobs y conectar
jaem0699 Sep 27, 2026
e886bd7
Merge remote-tracking branch 'origin/develop' into JOB-API-01
jaem0699 Sep 27, 2026
246072f
correccion
jaem0699 Sep 27, 2026
2bff5d8
correccion
jaem0699 Sep 27, 2026
97fad5d
test(db): validate PostgreSQL migrations and document database setup
Sep 27, 2026
01e5fde
correccion3
jaem0699 Sep 27, 2026
89a7a01
Merge pull request #73 from 4GeeksAcademy/JOB-API-01
Krisor1986 Sep 27, 2026
ca3b9ce
Merge remote-tracking branch 'origin/develop' into feature/db-43-migr…
Sep 27, 2026
473e8ca
fix(db): remove PostgreSQL enum types on migration rollback
Sep 27, 2026
8e6770d
Merge pull request #74 from 4GeeksAcademy/feature/db-43-migration-val…
jaem0699 Sep 27, 2026
5d0f106
docs: update current migration reference
Sep 27, 2026
188a6e4
Merge pull request #75 from 4GeeksAcademy/fix/migration-readme-reference
jaem0699 Sep 27, 2026
fe0215b
feat(deploy): configure Render staging
Sep 27, 2026
ac93ed9
fix(deploy): allow same-origin backend
Sep 27, 2026
3f6fd97
chore(deploy): document staging URLs
Sep 27, 2026
1d78a44
docs(deploy): document staging environment
Sep 27, 2026
20fb1f2
Merge pull request #76 from 4GeeksAcademy/feature/deploy-39-staging
jaem0699 Sep 27, 2026
c047c52
fix(leads): connect lead and client workflows
Sep 28, 2026
cd4b7a9
fix(clients): load details with legacy job statuses
Sep 28, 2026
b52e4f0
fix(calendar): support legacy job statuses
Sep 28, 2026
cafc589
fix(jobs): restore tenant-scoped job workflows
Sep 28, 2026
5e31c9e
Merge pull request #77 from 4GeeksAcademy/fix/leads-api-integration
SiiNNNN Sep 28, 2026
792c677
feat(dashboard): connect tenant analytics to live data
Sep 28, 2026
a28a17c
fix(release): stabilize demo navigation and deployment
Sep 28, 2026
ef14a3b
Merge pull request #78 from 4GeeksAcademy/fix/dashboard-api-35
Krisor1986 Sep 28, 2026
55230cc
Merge remote-tracking branch 'origin/develop' into fix/release-readiness
Sep 28, 2026
74db545
Merge pull request #79 from 4GeeksAcademy/fix/release-readiness
Krisor1986 Sep 28, 2026
938dbfd
feat(ui): add language and theme controls
Sep 28, 2026
2dceaa5
Merge pull request #80 from 4GeeksAcademy/feature/language-theme-cont…
Krisor1986 Sep 28, 2026
4db8f3f
fix(jobs): persist valid scheduling dates
Sep 28, 2026
bc4e26e
Merge pull request #81 from 4GeeksAcademy/fix/jobs-scheduling
Krisor1986 Sep 28, 2026
2872d06
docs(deploy): finalize demo limitations
Sep 28, 2026
bb3f5dc
Merge pull request #82 from 4GeeksAcademy/docs/deploy-38-finalize
Krisor1986 Sep 28, 2026
41b9b79
fix(inbox): create conversations and link clients
Sep 28, 2026
239551c
Merge pull request #83 from 4GeeksAcademy/fix/inbox-client-messaging
SiiNNNN Sep 29, 2026
61c59f8
fix(leads): keep form actions visible
Sep 30, 2026
f7f7033
feat(settings): complete workspace configuration
Sep 30, 2026
7d4252a
Merge pull request #84 from 4GeeksAcademy/fix/lead-modal-viewport
Krisor1986 Sep 30, 2026
f023e25
Merge remote-tracking branch 'origin/develop' into feature/settings-29
Sep 30, 2026
de06ffa
Merge pull request #85 from 4GeeksAcademy/feature/settings-29
Krisor1986 Sep 30, 2026
ef08455
feat(i18n): complete English Spanish and Portuguese UI
Sep 30, 2026
5409d81
Merge pull request #86 from 4GeeksAcademy/feature/i18n-18-complete
Krisor1986 Oct 1, 2026
6f0cf45
fix(subscription): require plan selection after trial expiry
Oct 1, 2026
c4e0dae
Merge pull request #87 from 4GeeksAcademy/fix/trial-expiry-plan-selec…
Krisor1986 Oct 1, 2026
f751880
fix(subscription): add payment step before activation
Oct 1, 2026
bf03557
fix(production): resolve core QA regressions
Oct 1, 2026
11478d8
Merge pull request #88 from 4GeeksAcademy/fix/expired-trial-payment-flow
Krisor1986 Oct 1, 2026
8d73efd
Merge remote-tracking branch 'origin/develop' into fix/production-qa-…
Oct 1, 2026
5b0db34
Merge pull request #89 from 4GeeksAcademy/fix/production-qa-round-2
Krisor1986 Oct 1, 2026
136ce33
fix: complete production QA flows
Krisor1986 Oct 1, 2026
7c4c3a5
Merge pull request #90 from 4GeeksAcademy/fix/production-qa-round-3
Krisor1986 Oct 2, 2026
e97e8f7
Merge remote-tracking branch 'origin/main' into develop
Krisor1986 Oct 2, 2026
d0fd580
Merge pull request #92 from 4GeeksAcademy/fix/sync-main-into-develop
Krisor1986 Oct 3, 2026
492aebf
fix: improve leads table contrast in dark mode
Krisor1986 Oct 3, 2026
bfbd5d6
Merge pull request #93 from 4GeeksAcademy/fix/leads-dark-header
Krisor1986 Oct 3, 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
43 changes: 43 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,46 @@ DEBUG=TRUE
# Front-End Variables
VITE_BASENAME=/
#VITE_BACKEND_URL=

# Authentication (#22): generate a random value; never commit the real secret.
JWT_SECRET_KEY=
FRONTEND_ORIGIN=http://localhost:3000
AUTH_RESET_URL=http://localhost:3000/reset-password
# Local simulation only with FLASK_DEBUG=1; reset links are private files.
# AUTH_RESET_OUTBOX=.local/reset-outbox
# SMTP_HOST=
# SMTP_PORT=587
# SMTP_FROM=
# SMTP_USER=
# SMTP_PASSWORD=
# Production alternative: Resend HTTPS email delivery.
# RESEND_API_KEY=re_...
# AUTH_EMAIL_FROM=ClientFlow <no-reply@your-verified-domain.example>
# Admin is disabled by default; local development only.
ENABLE_DEV_ADMIN=0
# Set false to connect the authentication UI to the backend.
VITE_USE_MOCK_API=false
VITE_BACKEND_URL=http://localhost:3001
# Private embeddings service — backend only
KNOWLEDGE_EMBEDDINGS_URL=
KNOWLEDGE_EMBEDDINGS_API_KEY=
KNOWLEDGE_EMBEDDINGS_MODEL=embeddinggemma
KNOWLEDGE_EMBEDDINGS_DIMENSIONS=768

# AI-01: server-side only. Never prefix service credentials with VITE_.
AI_SERVICE_URL=https://mac-mini-de-stonetech.taildc6e48.ts.net/v1/agents/customer-service/respond
AI_SERVICE_MODEL=qwen2.5:3b
AI_MIN_SIMILARITY=0.5
# Restrict the single credential to this local ClientFlow company ID.
AI_SERVICE_COMPANY_ID=
AI_SERVICE_API_KEY=
# Alternatively map each company ID to its own provisioned service credential.
# AI_SERVICE_COMPANY_KEYS={"1":"private-service-key"}

# Use only with a stateless inference endpoint; tenant authorization stays in ClientFlow.
AI_SERVICE_AUTH_MODE=company
AI_SERVICE_PLATFORM_KEY=

# Browser plan setup: random secret of at least 32 characters; empty disables writes.
# Backend only. Remove after setup. Never use a VITE_ prefix.
PLAN_SEED_KEY=
31 changes: 0 additions & 31 deletions .eslintrc

This file was deleted.

15 changes: 15 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module.exports = {
root: true,
env: { browser: true, es2022: true, node: true },
parserOptions: { ecmaVersion: 'latest', sourceType: 'module', ecmaFeatures: { jsx: true } },
plugins: ['react'],
extends: ['eslint:recommended'],
settings: { react: { version: 'detect' } },
rules: {
'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'no-unused-vars': 'off',
'no-constant-condition': ['error', { checkLoops: false }],
},
ignorePatterns: ['dist/', 'node_modules/'],
};
101 changes: 101 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Quality

on:
pull_request:
branches: [develop]
push:
branches: [develop]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: quality-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
backend:
name: Backend tests
runs-on: ubuntu-latest
timeout-minutes: 15
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: clientflow_test
POSTGRES_PASSWORD: ci_test_only
POSTGRES_DB: clientflow_db43
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U clientflow_test -d clientflow_db43"
--health-interval 5s
--health-timeout 5s
--health-retries 10
env:
AUTH_TEST_DATABASE_URL: sqlite://
PYTHONPATH: src:tests
PYTHONDONTWRITEBYTECODE: "1"
PIPENV_VENV_IN_PROJECT: "1"
PIPENV_IGNORE_VIRTUALENVS: "1"
PIPENV_DONT_LOAD_ENV: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: pip
cache-dependency-path: Pipfile.lock
- run: python -m pip install pipenv==2024.4.1
- run: pipenv verify && pipenv sync
- name: Check Python syntax and indentation
run: |
pipenv run python -m compileall -q src tests
pipenv run python -m tabnanny src tests
- name: Run backend tests with an isolated database
run: pipenv run python -m unittest discover -s tests -p 'test_*.py' -v

- name: Validate PostgreSQL migrations
env:
DATABASE_URL: postgresql://clientflow_test:ci_test_only@127.0.0.1:5432/clientflow_db43
MIGRATION_TEST_DATABASE_URL: postgresql://clientflow_test:ci_test_only@127.0.0.1:5432/clientflow_db43
FLASK_APP: src/app.py
JWT_SECRET_KEY: ci-only-signing-key-for-migration-tests-43
run: |
pipenv run flask db upgrade
pipenv run flask db check
pipenv run python -m unittest test_postgres_migrations test_postgres_migration_cycle -v

frontend:
name: Frontend checks
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build

formatting:
name: Patch formatting
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check added lines for whitespace errors
if: github.event_name == 'pull_request'
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: git diff --check "$BASE_SHA...$HEAD_SHA"
- name: Check commit whitespace
if: github.event_name != 'pull_request'
run: git show --format= --check HEAD
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ dist/*
!.gitkeep
!.htaccess
!.eslintrc
.env
!.env.example
.now

Expand All @@ -80,4 +81,25 @@ database.database
database.db
diagram.png
__pycache__/
.local/
.venv/

# Local Flask database files
src/instance/*.db


# Local databases and SQLite temporary files
*.db
*.db-*
*.sqlite3
*.sqlite3-*
*.sqlite-*

# Private key files
*.pem
*.key

!.python-version

# Ignore new local migration files; committed migrations remain tracked
migrations
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.13
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,8 @@
},
"[javascriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}
5 changes: 4 additions & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,17 @@ flask-migrate = "*"
flask-swagger = "*"
psycopg2-binary = "*"
python-dotenv = "*"
flask-cors = "*"
gunicorn = "*"
cloudinary = "*"
flask-admin = "==2.0.0"
typing-extensions = "*"
flask-jwt-extended = "==4.6.0"
wtforms = "==3.1.2"
sqlalchemy = "*"
flask-cors = "*"
pypdf = "*"
python-docx = "*"
openai = "*"

[requires]
python_version = "3.13"
Expand Down
Loading
Loading