Technical Manifesto

How We Build HomeGrif

Technology Stack

We use modern, proven technologies with permissive licenses:

1. Runtime: Node.js 20.x (MIT)

JavaScript runtime for server-side. Express.js 4.18.x as web framework.

2. Database: PostgreSQL 15.x

Relational database with MIT-like license. pg driver for Node.js connection.

3. Authentication: Passport.js (MIT)

Google OAuth 2.0 for investors and prospects. bcryptjs for password hashing.

4. Frontend: Vanilla JS/CSS

No framework - pure ES6+ JavaScript. Leaflet.js for interactive maps (BSD-2).

5. Email: Resend (MIT)

Transactional emails from hello@homegrif.com. Two-way communication via webhooks.

6. Security: Cloudflare + Helmet

Turnstile CAPTCHA, rate limiting, honeypot. CSP, HSTS, XSS protection headers.

Architecture

Simple, scalable architecture on Render PaaS:

We prefer simplicity over complexity. Minimum necessary complexity.

Licenses

All dependencies use permissive open-source licenses:

Security

Bank-grade security practices:

1. Automated monitoring

Dependabot for weekly security scans. npm audit monthly.

2. Update policy

Critical/high vulnerabilities - immediate fix. Minor/patch - weekly.

3. Rate limiting

Admin login: 5 attempts/15min. Contact form: 5/hour. Webhooks: 100/min.

4. Input validation

XSS prevention, SQL injection protection. All inputs sanitized.

Development Principles

Six rules we follow:

1. 1. Data in database

All persistent data in PostgreSQL, not in files (except static content).

2. 2. Audit trail

Every action must be traceable. GDPR and compliance ready.

3. 3. Transparency

Clear, honest communication. Public documentation.

4. 4. Testing

Smoke tests before every deploy. Regression tests for every bug fix.

5. 5. Versioning

Semantic versioning (MAJOR.MINOR.PATCH). Changelog for every release.

6. 6. Simplicity

Minimum necessary complexity. Rather 3 similar lines than premature abstraction.

Environments

Two-branch deployment model:

1. TEST (test.homegrif.com)

Branch: main. Auto-deploy for development and testing.

2. PROD (www.homegrif.com)

Branch: production. Merge from main after TEST verification.

Contributing

When adding new dependencies: 1) Check license compatibility (MIT, ISC, BSD, Apache). 2) Run npm audit. 3) Update this documentation. 4) Avoid dependencies with known vulnerabilities.

Interested in collaboration?

Check our tech stack or contact us.

Tech Stack

Living document • Last updated: December 2024 • v2.2.0