The team repo is a submodule inside each site's webroot and provides a JAM Stack toolset for sites implementing Rust REST API backends with AI-powered insights. Our goal is to connect site users with developers, designers, and innovators to collaborate on coding projects focused on skill training, job creation and environmental improvement.
- Post Activities: Integrate project postings and collaboration requests
- Smart Discovery: AI-powered project search with natural language queries
- Task Tracking: Manage to-dos with Github PLAN.md integration and PRs
- Timeline Views: Visual project timelines and milestone tracking
- People Directory: Connect with developers, designers, and project leaders
- Team Formation: Create and join focused development teams
- Organization Network: Connect with verified organizations and content partners
- Skills Matching: AI-powered matching based on technical skills and interests
- Smart Search: Natural language search powered by Google Gemini AI
- Project Recommendations: Personalized project suggestions based on skills and interests
- Data Analysis: Smart insights for team and project performance
- Policy Matching: Connect with projects aligned to your policy preferences
- Skills Portfolio: Showcase technical expertise with visual skill levels
- Interest Ratings: 5-star rating system for 20+ focus areas
- Policy Preferences: Comprehensive survey with Sankey chart visualizations
- Certification Tracking: Verified badges and achievements
- HTML5/CSS3: Modern, semantic markup with CSS Grid and Flexbox
- Vanilla JavaScript: No build process required - runs directly in browser
- Responsive Design: Mobile-first design with smooth animations
- Notion-Inspired UI: Clean, minimal aesthetic with soft shadows and gradients
- Actix-web: High-performance web framework
- SQLx: Async PostgreSQL database toolkit
- Insight AI Endpoints: Multiple LLMs for smart search and insights
- JWT Authentication: Secure token-based authentication
- PostgreSQL: Production-ready relational database
- SuiteCRM Schema: Compatible with Salesforce/Dynamics table structure
- Azure/Google Cloud: Cloud-ready database configuration
team/
โโโ index.html # Main application file
โโโ css/ # Stylesheets
โ โโโ projects.css # Project management styles
โ โโโ people-teams.css # People & teams styles
โ โโโ account.css # Account & survey styles
โโโ js/ # JavaScript modules
โ โโโ projects.js # Project management functionality
โ โโโ survey.js # Survey & skills management
โโโ config/ # Legacy frontend config (being retired)
โ โโโ settings.example.js # Deprecated - see PLAN.md
โโโ src/ # Rust backend source
โ โโโ main.rs # Main server application
โโโ sql/ # Database schema
โ โโโ suitecrm-postgres.sql
โโโ projects/ # Team and list tools, meetup integration
โโโ edit.html
- Clean & Minimal: Uncluttered interface focusing on content
- Soft Color Palette: Light green, pastel blue, muted orange accents
- Smooth Animations: Subtle transitions and hover effects
- Professional Typography: Inter font family with consistent hierarchy
- Collapsible Navigation: Smooth sidebar with icon tooltips
- Responsive Design: Optimized for desktop, tablet, and mobile
- Accessibility: WCAG compliant with keyboard navigation support
- Progressive Enhancement: Works without JavaScript for core features
- Rust 1.70+ with Cargo
- PostgreSQL 12+
- (Optional/Free) Google Gemini AI API key
-
Use the site webroot that contains
team/as a submodulecd <site-webroot> git submodule update --init --recursive team cd team
-
Configure shared environment in webroot
cd .. cp docker/.env.example docker/.env # Edit docker/.env with database and OAuth values cd team
-
Set up database
The SQL schema is based on SuiteCRM SQL (/profile/crm)
# Create PostgreSQL database
createdb IndustryDB
# Run schema setup
psql IndustryDB < sql/suitecrm-postgres.sql- Configure environment variables
Set COMMONS_HOST and related values in ../docker/.env.
-
Initialize database schema
cargo run -- init-db
-
Start the backend server
cargo run -- serve
ย ย Or include the port by running:
SERVER_PORT=8081 cargo run -- serveWe recommend skipping 1 and open a server in your webroot instead.
-
Serve the frontend
# Option 1: Simple HTTP server python -m http.server 3000 # Option 2: Node.js serve npx serve . # Option 3: PHP server php -S localhost:3000
-
Open in browser
http://localhost:8888
ย ย Or (recommended) open your webroot folder after running in your webroot (parent of the "team" folder):
python -m http.server 8887
Then view here when coding (hit refresh after changing with an AI CLI above):
Update the API base URL in your frontend:
const API_BASE = 'http://localhost:8081/api';The application supports Azure and Google Cloud PostgreSQL:
// In Cargo.toml or environment variables
DATABASE_URL=postgresql://sqladmin@industry-server.database.windows.net/IndustryDBConfigure OAuth providers in docker/.env:
- Google OAuth 2.0
- GitHub OAuth
- LinkedIn OAuth
- Email/password authentication
- Sign up using Google, GitHub, LinkedIn, or email
- Complete your profile with skills and interests
- Take the policy survey to find aligned projects
- Browse opportunities or use AI search to find projects
- Join teams and collaborate on local innovation projects
- Post activities with detailed requirements
- Recruit team members based on skills and interests
- Track project progress with built-in timelines
- Manage team collaboration with integrated tools
- Register your organization and get verified
- Post funded opportunities with Innovation Bond support
- Connect with local talent through the directory
- Track impact metrics across multiple projects
Primary Users: Vibe programmers, computer science and data science grads Use Cases:
- Government AI modernization projects
- Local community development initiatives
- Civic technology implementations
- Public-private partnership collaborations
- Natural Language Search: "Find JAM Stack developers in Atlanta working on AI projects"
- Smart Recommendations: Personalized project and team suggestions
- Insight Generation: Analysis of team dynamics and project progress
- Content Enhancement: AI-assisted project descriptions and requirements
// Example AI search query
const aiResponse = await queryGeminiAI(`
Based on this search: "${userQuery}"
Find relevant projects matching:
- Technical skills: ${userSkills}
- Location: ${userLocation}
- Interests: ${userInterests}
`);