-
Notifications
You must be signed in to change notification settings - Fork 0
setup
This guide will help you set up a complete development environment for contributing to Intelligent IDE.
- Git: Version control system
- VS Code: Primary development environment
- Node.js: 16.0.0+ (for frontend development)
- Python: 3.11+ (for backend development)
- Docker: Latest version (for services)
- GitHub CLI: For easier repository management
- Postman: For API testing
- PostgreSQL Client: For database management
git clone https://github.com/[organization]/team-project-25spring-36.git
cd team-project-25spring-36
team-project-25spring-36/
├── frontend/
│ └── intelligent-ide/ # VS Code extension
├── backend/
│ ├── intellide/ # FastAPI application
│ ├── deploy/ # Deployment scripts
│ └── docs/ # Backend documentation
├── images/ # Project diagrams
└── docs/ # Additional documentation
-
Navigate to Frontend Directory
cd frontend/intelligent-ide
-
Install Dependencies
npm install
-
Verify Installation
npm run compile
- Open VS Code in the
frontend/intelligent-ide
directory - Press
F5
to launch Extension Development Host - Test extension commands in the new window
frontend/intelligent-ide/
├── package.json # Extension manifest
├── tsconfig.json # TypeScript configuration
├── esbuild.js # Build configuration
└── src/
├── extension.ts # Main extension entry point
├── commands/ # Command implementations
├── services/ # Backend API integration
├── utils/ # Utility functions
└── resources/ # Configuration files
-
npm run compile
: Compile TypeScript -
npm run watch
: Compile in watch mode -
npm run test
: Run tests -
npm run package
: Package extension
-
Navigate to Backend Directory
cd backend/deploy
-
Create Virtual Environment (Recommended)
python -m venv venv source venv/bin/activate # On macOS/Linux # venv\Scripts\activate # On Windows
-
Install Dependencies
pip install -r requirements.txt
- Open Docker Desktop
- Go to Settings → General
- Enable "Expose daemon on tcp://localhost:2375 without TLS"
- Apply & Restart
macOS/Linux:
cd backend/deploy
sh backend.sh
Windows:
cd backend/deploy
backend.bat
backend/intellide/
├── main.py # FastAPI application entry
├── config.py # Configuration management
├── routers/ # API route handlers
│ ├── user.py # User management
│ ├── course.py # Course management
│ ├── course_directory.py # File management
│ └── course_chat.py # Chat functionality
├── database/ # Database models and connections
├── cache/ # Redis cache implementation
├── storage/ # File storage management
├── utils/ # Utility functions
└── tests/ # Test suite
The backend uses PostgreSQL running in Docker. The database schema is automatically created on first startup.
- User: Authentication and user management
- Course: Course information and metadata
- CourseStudent: Student enrollment relationships
- CourseDirectory: File and folder structure
- CourseHomeworkAssignment: Assignment management
Recommended extensions for development:
{
"recommendations": [
"ms-python.python",
"ms-vscode.vscode-typescript-next",
"ms-vscode.extension-test-runner",
"bradlc.vscode-tailwindcss",
"esbenp.prettier-vscode",
"ms-python.flake8"
]
}
- ESLint: Code linting
- Prettier: Code formatting
- TypeScript: Type checking
- Flake8: Code linting
- Black: Code formatting
- MyPy: Type checking
- Pytest: Testing framework
cd frontend/intelligent-ide
npm test
- Unit tests for individual functions
- Integration tests for VS Code API interaction
- Extension activation tests
cd backend
python -m pytest intellide/tests/
- API endpoint testing
- Database model testing
- Authentication flow testing
- File operations testing
Once the backend is running, access:
- Swagger UI: http://localhost:8080/docs
- ReDoc: http://localhost:8080/redoc
Import the API collection:
- Export OpenAPI spec from http://localhost:8080/openapi.json
- Import into Postman
- Set up environment variables for testing
- VS Code Extension Host: Use F5 to launch with debugger attached
- Browser DevTools: For webview debugging
- Output Panel: Check extension logs
-
FastAPI Debug Mode: Set
DEBUG=True
in configuration - Python Debugger: Use VS Code Python debugger
- API Logs: Monitor FastAPI request/response logs
Create .env
files for local development:
API_BASE_URL=http://localhost:8080
DEBUG_MODE=true
DATABASE_URL=postgresql://user:password@localhost:5432/intellide
REDIS_URL=redis://localhost:6379
SECRET_KEY=your-secret-key
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
-
Create Route Handler in
backend/intellide/routers/
- Add Database Models if needed
- Update API Documentation
- Write Tests
- Update Frontend Service to consume API
-
Register Command in
package.json
-
Implement Handler in
src/commands/
-
Register in Extension (
src/extension.ts
) - Add Tests
- Update Documentation
# Create migration
alembic revision --autogenerate -m "Description"
# Apply migration
alembic upgrade head
- Check TypeScript compilation errors
- Verify package.json configuration
- Ensure proper directory structure
- Verify Docker is running
- Check port availability (8080)
- Review backend startup logs
- Ensure PostgreSQL container is running
- Check connection string configuration
- Verify network connectivity
- Check Troubleshooting Guide
- Review GitHub Issues
- Contact development team
- Join development Discord/Slack (if available)
Before contributing:
- Read Contributing Guide
- Set up development environment
- Create feature branch
- Write tests for new features
- Submit pull request
- Learn about the architecture
- Explore the API reference
- Read contributing guidelines
- Understand deployment process
- Meeting Notes
- Resources
- FAQs
### ProjectOverview.md
```markdown
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/ProjectOverview.md -->
# Project Overview
The team-project-25spring-36 is aimed at creating an intelligent IDE for educational environments. This project is designed to provide interactive notebook capabilities within VS Code and facilitate collaborative learning experiences.
## Objectives
- Objective 1
- Objective 2
- Objective 3
## Technologies Used
- Technology 1
- Technology 2
- Technology 3
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/GettingStarted.md -->
# Getting Started
To get started with the team-project-25spring-36, follow these steps:
1. **Clone the repository**:
```bash
git clone https://github.com/SUSTech-CS304/team-project-25spring-36.git
-
Install dependencies:
cd team-project-25spring-36 npm install
-
Run the project:
npm start
- VS Code 1.60.0 or higher for extension development
- Node.js 16.0.0 or higher for frontend build tools
- Python 3.11+ for backend API services
### TeamMembers.md
```markdown
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/TeamMembers.md -->
# Team Members
| Name | Role | Contact Information |
|---------------|---------------------|-----------------------|
| Member 1 | Project Manager | contact@intelligent-ide.project |
| Member 2 | Developer | contact@intelligent-ide.project |
| Member 3 | Designer | contact@intelligent-ide.project |
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/MeetingNotes.md -->
# Meeting Notes
## Development Meeting Template
- **Attendees**: Development team members
- **Agenda**:
- Technical architecture discussions
- Development progress updates
- **Notes**:
- Project progress discussion and technical implementation updates
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/Resources.md -->
# Resources
- [Project Documentation](../../)
- [API Reference](api-reference)
- [Architecture Guide](architecture)
<!-- filepath: /Users/shimile/projects/team-project-25spring-36.wiki/FAQs.md -->
# Frequently Asked Questions
## Q1: How do I contribute to the project?
A1: To contribute, please fork the repository, make your changes, and submit a pull request.
## Q2: What is the project's timeline?
A2: The project is expected to be completed by the end of Spring 2025 semester.
This structure provides a comprehensive overview of the project and serves as a guide for team members. You can expand each section with more detailed information as needed. Make sure to keep the wiki updated as the project progresses!
🏠 Home
- Getting Started
- Installation Guide
- Authentication
- Course Management
- Collaborative Editing
- Assignments
- Notebook Features
- File Management
- Troubleshooting
- Setup & Development
- Architecture Overview
- Backend Development
- Frontend Development
- API Reference
- Contributing
- Deployment