An AI-powered web application that provides technology stack recommendations and team composition suggestions for software projects.
TechStackr helps PMs, recruiters, and technical leaders make informed decisions about technology choices and team composition by leveraging AI to analyze project requirements and provide tailored recommendations.
- AI-Powered Recommendations: Uses OpenAI's GPT models to generate technology stack suggestions
- Team Composition Analysis: Provides recommended team structure and roles
- Project Management: Track multiple projects and their recommendations
- Modern Rails UI: Clean, responsive interface built with Rails ERB views
- Flexible Database: Works with your existing PostgreSQL instance
- Ruby 3.4.5
- Rails 7.2.2
- PostgreSQL 12+ (uses your existing instance)
- OpenAI API (GPT-4o-mini)
- ERB Views (Rails default templating)
- Turbo & Stimulus (Hotwire for modern interactions)
- Custom CSS (Modern, responsive design)
Before you begin, ensure you have the following:
- Ruby 3.4.5 or higher
- PostgreSQL running (you already have this! β )
- Bundler gem (
gem install bundler
) - OpenAI API key (Get one here)
git clone <your-repo-url>
cd techstackr
# Configure bundler to install gems locally
bundle config set --local path 'vendor/bundle'
# Install dependencies
bundle install
Create a .env
file in the root directory with your PostgreSQL connection details:
cat > .env << 'ENVFILE'
# PostgreSQL Connection (adjust to match your setup)
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_postgres_password
# OpenAI API Configuration
OPENAI_API_KEY=sk-your-api-key-here
# Rails Configuration
RAILS_ENV=development
RAILS_MAX_THREADS=5
ENVFILE
Important: Update the PostgreSQL credentials to match your existing database:
DB_HOST
: Your PostgreSQL host (usuallylocalhost
if running locally)DB_PORT
: Your PostgreSQL port (default is5432
)DB_USERNAME
: Your PostgreSQL usernameDB_PASSWORD
: Your PostgreSQL password
This will create a new database called techstackr_development
in your existing PostgreSQL instance:
# Create the database
bundle exec rails db:create
# Run migrations to set up the schema
bundle exec rails db:migrate
# Start the development server
bundle exec rails server
# Or use the shorthand
bundle exec rails s
The application will be available at http://localhost:3000
- Navigate to
http://localhost:3000
- Click "Create New Project"
- Fill in:
- Project Title: A descriptive name for your project
- Project Type: Select from web app, mobile app, API, etc.
- Description: Detailed project requirements (be specific for better recommendations)
- Click "Create Project"
- On the project detail page, click "Generate AI Recommendations"
- Wait for the AI to analyze your project (usually 5-15 seconds)
- View the recommendations:
- Technology Stack: Categorized by Frontend, Backend, Database, DevOps, etc.
- Team Composition: Suggested roles, team size, and responsibilities
- View All Projects: Home page shows all your projects with status badges
- Project Status:
- π‘ Pending: Ready to generate recommendations
- π΅ Processing: AI is analyzing the project
- π’ Completed: Recommendations available
- π΄ Failed: Generation failed, can retry
The .env
file in the root directory:
# PostgreSQL Connection
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
# OpenAI API Configuration
OPENAI_API_KEY=sk-your-api-key-here
# Rails Configuration
RAILS_ENV=development
RAILS_MAX_THREADS=5
The application creates these databases in your PostgreSQL instance:
techstackr_development
- Development databasetechstackr_test
- Test database (created automatically when running tests)techstackr_production
- Production database (when deployed)
To verify your databases were created:
psql -h localhost -U postgres -l
To drop the databases if needed:
bundle exec rails db:drop
techstackr/
βββ app/
β βββ controllers/ # Controllers
β βββ models/ # ActiveRecord models
β βββ services/ # Business logic (AI service)
β βββ views/ # ERB templates
βββ config/
β βββ database.yml # Database configuration
β βββ routes.rb # Application routes
βββ db/
β βββ migrate/ # Database migrations
βββ Gemfile # Ruby dependencies
βββ .env # Environment variables (create this!)
βββ README.md # This file
title
: stringdescription
: textproject_type
: stringstatus
: enum (pending, processing, completed, failed)
project_id
: referenceai_response
: text (full JSON response)summary
: text
recommendation_id
: referencename
: stringcategory
: string (Frontend, Backend, Database, etc.)description
: textreason
: text
recommendation_id
: referencerole
: stringcount
: integerskills
: textresponsibilities
: text
The application uses OpenAI's GPT-4o-mini model to generate recommendations. The AI is prompted with:
- Project title
- Project type
- Detailed description
And returns structured JSON with:
- Technology recommendations (categorized)
- Team composition suggestions
- Implementation considerations
bundle exec rails db:migrate
bundle exec rails generate migration MigrationName
bundle exec rails console
bundle exec rails routes
# Create database
bundle exec rails db:create
# Run migrations
bundle exec rails db:migrate
# Rollback last migration
bundle exec rails db:rollback
# Reset database (drop, create, migrate)
bundle exec rails db:reset
# Seed database
bundle exec rails db:seed
bundle exec rails test
-
Verify PostgreSQL is running:
# If using Docker docker ps | grep postgres # Or check service status systemctl status postgresql
-
Test connection manually:
psql -h localhost -U postgres -c "SELECT version();"
-
Check your .env file:
cat .env
-
Verify database exists:
psql -h localhost -U postgres -l | grep techstackr
Error: "database does not exist"
bundle exec rails db:create
Error: "relation does not exist"
bundle exec rails db:migrate
Error: "password authentication failed"
- Check your
DB_PASSWORD
in.env
- Verify PostgreSQL user credentials
If you encounter permission errors during bundle install
:
# Configure bundle to install locally
bundle config set --local path 'vendor/bundle'
bundle install
- Verify your API key is correct in
.env
- Check your OpenAI account has credits
- Ensure no firewall is blocking API requests
This project is open source and available under the MIT License.
We welcome contributions from the community!
- π Read our Contributing Guide to get started
- π Found a bug? Report it here
- π‘ Have an idea? Submit a feature request
- π Security issue? See our Security Policy
Please follow our code of conduct and contribution guidelines when participating.
- π Check our documentation for setup help
- π¬ Open a Discussion for questions
- π Report bugs via GitHub Issues
- π See Migration Tracking Guide for database migration info
Built with β€οΈ using Ruby on Rails and OpenAI