PartnerTools is a JAM Stack toolset for teams implementing Rust REST API backends with AI-powered insights. PartnerTools connects site users with developers, designers, and innovators to collaborate on coding projects focused on skill training, job creation and environmental improvement.
- Post Activities: Create detailed project postings, job openings, and collaboration requests
- Smart Discovery: AI-powered project search with natural language queries
- Task Tracking: Manage assigned tasks with progress monitoring and deadlines
- 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 funding sources
- 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
- Gemini AI: Google's AI 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/ # Configuration files
โ โโโ settings.example.js # Example configuration
โโโ 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+
- Modern web browser
- (Optional) Google Gemini AI API key
-
Clone the repository
git clone <repository-url> cd PartnerTools
-
Configure environment
cp config/settings.example.js config/settings.js # Edit config/settings.js with your API keys and database settings
-
Set up database
# Create PostgreSQL database createdb ModelEarthDB # Run schema setup psql partnertools < sql/suitecrm-postgres.sql
-
Configure environment variables
COMMONS_HOST in .env file
-
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 -- serve
We 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:3000
ย ย 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@model-earth-server.database.windows.net/ModelEarthDB
Configure OAuth providers in config/settings.js
:
- 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 React 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}
`);