Grindly is an end-to-end engineering ecosystem designed to bridge the gap between "writing code" and "architecting systems." Moving beyond simple syntax tutorials, Grindly immerses users in the full Software Development Lifecycle (SDLC) through an interactive environment.
- Interactive Multi-file IDE: A robust coding environment powered by the
monaco-editor. - Architecture Canvas: A drag-and-drop interface for designing complex system architectures.
- AI-Driven Architect Reviewer: Automated feedback to ensure code and designs align with industry best practices.
- SDLC Immersion: Real-world workflow automation and lifecycle management.
- Framework: Next.js 16 (React 19)
- Styling: Tailwind CSS 4
- UI Components: shadcn/ui, Base UI
- Editor: Monaco Editor
- State: React hooks
- Deployment: Docker, Vercel-ready
- Runtime: Node.js
- Language: TypeScript
- Framework: NestJS + Fastify (2x faster routing)
- Database: PostgreSQL
- ORM: Prisma
- Caching: Redis with decorator-based caching
- Development: Hot reload with watch mode
- Containerization: Docker + Docker Compose
- Services: PostgreSQL, Redis
- Health Checks: Built-in service monitoring
- AI Integration: Google GenAI
- Authentication: Firebase
- Notifications: Canvas Confetti
- Design Tokens: Tailwind CSS variables
Test-Driven Development (TDD), SOLID Principles, Scalable Architecture, System Design Patterns, and Clean Code Refactoring.
- Node.js 20+ (LTS recommended)
- npm
- Docker & Docker Compose (for full stack) or PostgreSQL + Redis
-
Clone the repository
git clone https://github.com/getgrindly/Grindly.git cd Grindly -
Set up environment
cp .env.example .env cp .env.local.example .env.local # Update with your API keys -
Start all services
docker-compose up --build
Services start automatically:
- Frontend: http://localhost:3000 (Next.js)
- Backend: http://localhost:5000 (NestJS + Fastify)
- PostgreSQL: localhost:5432
- Redis: localhost:6379
See DOCKER.md for detailed Docker guide.
-
Install dependencies
npm install
-
Create environment file
cp .env.local.example .env.local # Update with your API keys -
Start dev server
npm run dev
Frontend runs on
http://localhost:3000
-
Install dependencies
cd backend npm install -
Set up PostgreSQL & Redis
# PostgreSQL brew install postgresql@16 # macOS # or use Docker: docker run -d -p 5432:5432 postgres:16-alpine # Redis brew install redis # macOS # or use Docker: docker run -d -p 6379:6379 redis:7-alpine
-
Configure environment
cp .env.example .env
-
Run database migrations
npm run db:migrate npm run db:generate
-
Start backend server
npm run dev
Backend runs on
http://localhost:5000
Run both concurrently:
- Terminal 1:
npm run dev(frontend on port 3000) - Terminal 2:
cd backend && npm run dev(backend on port 5000)
- View data:
npm run db:studio(opens Prisma Studio) - Create migrations:
npm run db:migrate(after schema changes) - Generate types:
npm run db:generate
Grindly/
βββ src/ # Frontend source
β βββ components/ # React components
β βββ services/ # Service integrations
β βββ lib/ # Utilities
β βββ main.tsx # Entry point
βββ backend/ # Backend source
β βββ src/
β β βββ index.ts # Express app
β β βββ lib/ # Utilities (Prisma, etc.)
β β βββ types/ # TypeScript types
β β βββ middleware/ # Express middleware
β βββ prisma/
β β βββ schema.prisma # Database schema
β βββ package.json
β βββ tsconfig.json
βββ components/ # UI components
βββ package.json # Frontend dependencies
βββ README.md
Contributions are welcome! Whether it's improving the AI reviewer or adding new canvas components:
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.