Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions .github/ISSUE_TEMPLATE/mvp-tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
name: MVP Final Tasks
about: Tracking the final tasks needed for MVP release
title: 'MVP: Final Tasks for Initial Release'
labels: enhancement, MVP
assignees: ''
---

## Description
This issue tracks the final tasks needed to prepare Dev Session Buddy for its initial MVP release. These tasks focus on ensuring the package is well-tested, documented, and ready for publication on npm.

## Tasks

### 1. Add Comprehensive Test Suite
- [ ] Unit Tests
- [ ] Template manager functionality
- [ ] Utility functions
- [ ] Configuration management
- [ ] Version checking
- [ ] Integration Tests
- [ ] CLI commands (`doctor`, `init`)
- [ ] Project creation workflow
- [ ] Template application
- [ ] Error handling
- [ ] Shell Tests
- [ ] Session start scripts
- [ ] Environment setup
- [ ] Tool validation
- [ ] Test Coverage
- [ ] Set up coverage reporting
- [ ] Achieve >80% coverage

### 2. Add Detailed Documentation
- [ ] API Documentation
- [ ] CLI command reference
- [ ] Configuration options
- [ ] Template structure
- [ ] User Guides
- [ ] Getting started guide
- [ ] Template customization
- [ ] Framework integration
- [ ] Contributing Guidelines
- [ ] Development setup
- [ ] Code style guide
- [ ] Pull request process
- [ ] Package Documentation
- [ ] Update README.md
- [ ] Add examples
- [ ] Document installation options

### 3. Set up Continuous Integration
- [ ] GitHub Actions Workflow
- [ ] Automated testing
- [ ] Code linting
- [ ] Coverage reporting
- [ ] Release Management
- [ ] Version bumping
- [ ] Changelog generation
- [ ] Tag creation
- [ ] Package Publishing
- [ ] npm publish automation
- [ ] Package verification

### 4. Prepare for npm Publication
- [ ] Package Configuration
- [ ] Update package.json metadata
- [ ] Add keywords
- [ ] Set up package scope
- [ ] Access Control
- [ ] Configure package access
- [ ] Set up maintainers
- [ ] Release Planning
- [ ] Create release checklist
- [ ] Plan version strategy
- [ ] Document release process

## Technical Details
- Test Framework: Jest for unit/integration tests, BATS for shell tests
- Documentation: Markdown files in `/docs` directory
- CI/CD: GitHub Actions
- Package Manager: npm

## Dependencies
- Node.js >=16.0.0
- npm >=8.0.0
- Git for version control
- GitHub Actions for CI/CD

## Success Criteria
- All tests passing with >80% coverage
- Documentation complete and reviewed
- CI/CD pipeline operational
- Package successfully published to npm
- Sample projects working with published package

## Additional Notes
- Focus on maintainability and extensibility
- Ensure clear error messages and user feedback
- Document all breaking changes
- Consider backward compatibility
- Plan for future enhancements
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Task
about: A development task that needs to be completed
title: ''
labels: task
assignees: ''
---

## Description
<!-- A clear and concise description of what needs to be done -->

## Acceptance Criteria
<!-- List the requirements that must be met for this task to be considered complete -->

- [ ] Requirement 1
- [ ] Requirement 2
- [ ] Requirement 3

## Technical Details
<!-- Any technical details, implementation notes, or considerations -->

## Dependencies
<!-- List any dependencies or blockers -->

## Additional Context
<!-- Add any other context about the task here -->
30 changes: 30 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Development files
tests/
docs/
scripts/
.github/
.git/
.gitignore
.eslintrc*
.prettierrc*
jest.config.js

# Editor files
.vscode/
.idea/
*.swp
*.swo

# Build and coverage
coverage/
.nyc_output/
*.log

# Environment
.env*
.env.local
.env.*.local

# Misc
*.tgz
.DS_Store
111 changes: 101 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,24 +159,115 @@ dev-session-buddy/
└── docs/ # Documentation
```

### Common Configurations

Here are some common configuration examples:

```yaml
# Basic configuration
name: "My Project"
tools:
required:
- git
- node
optional:
- docker

# Full configuration with all options
name: "Advanced Project"
description: "A complex project with multiple tools"
tools:
required:
- git
- node
- npm
- python3
optional:
- docker
- aws-cli
- terraform
standards:
- "Use TypeScript for new features"
- "Write unit tests for all components"
- "Follow GitFlow branching strategy"
git:
main_branch: main
develop_branch: develop
feature_prefix: feature
fix_prefix: fix
frameworks:
- vue
- typescript
ci:
provider: github-actions
node_versions:
- 16
- 18
```

### Advanced Usage

#### Custom Templates

Create a custom template for your framework:

1. Create a new directory in `src/templates/`:
```bash
mkdir src/templates/my-framework
```

2. Add required files:
- `session-start.sh`: Main script
- `config-template.yaml`: Default configuration
- `README.md`: Template documentation

#### Multiple Projects

Use Dev Session Buddy across multiple projects:

1. Install globally:
```bash
npm install -g @devsessionbuddy/cli
```

2. Initialize in any project:
```bash
dsb init --framework vue
```

### Troubleshooting

1. **Script Permission Issues**
Common issues and solutions:

1. **Script Permission Errors**
```bash
chmod +x session-start.sh
```

2. **Missing Tools**
- Ensure all required tools are installed
- Check PATH environment variable
- Run `which <tool-name>` to verify installation
2. **Missing Dependencies**
- Ensure Node.js version is 16 or higher
- Run `npm install` in project root
- Check PATH for required tools

3. **Configuration Issues**
- Verify YAML syntax
- Ensure config file is in correct location
3. **Configuration Not Found**
- Ensure config file is in project root or config/
- Check file permissions

For more help, please [open an issue](https://github.com/codevalve/dev-session-buddy/issues).
- Validate YAML syntax

4. **Git Integration Issues**
- Ensure you're in a git repository
- Check git installation: `git --version`
- Verify git remote configuration

5. **Framework Template Issues**
- Verify template exists for your framework
- Check template files permissions
- Ensure all template files were copied

For more complex issues:
1. Enable debug mode: `DEBUG=true ./session-start.sh`
2. Check logs in `~/.dev-session-buddy/logs/`
3. [Open an issue](https://github.com/codevalve/dev-session-buddy/issues) with debug output

## Testing 🧪

Expand Down
64 changes: 64 additions & 0 deletions bin/create-dev-session-buddy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env node
import { Command } from 'commander';
import inquirer from 'inquirer';
import chalk from 'chalk';
import ora from 'ora';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
import { TemplateManager } from '../src/template-manager.js';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const program = new Command();

program
.version('0.1.0')
.description('Create a new project with Dev Session Buddy')
.argument('[name]', 'Project name')
.option('-f, --framework <framework>', 'Framework to use (minimal, vue)')
.option('-p, --preset <preset>', 'Configuration preset (minimal, full, team)')
.action(async (name, options) => {
try {
// If no name provided, prompt for it
if (!name) {
const answers = await inquirer.prompt([
{
type: 'input',
name: 'projectName',
message: 'What is your project name?',
validate: input => input.length > 0 || 'Project name is required'
}
]);
name = answers.projectName;
}

// Create project directory
const projectDir = join(process.cwd(), name);
const spinner = ora('Creating new project...').start();

try {
const framework = options.framework || 'minimal';
const preset = options.preset || 'full';

const templateManager = new TemplateManager();
await templateManager.applyTemplate(projectDir, framework, preset);

spinner.succeed('Project created successfully!');

console.log('\nNext steps:');
console.log(`1. cd ${name}`);
console.log('2. npm install');
console.log('3. npm start');
} catch (error) {
spinner.fail('Project creation failed');
console.error(chalk.red(error.message));
process.exit(1);
}
} catch (error) {
console.error(chalk.red(error.message));
process.exit(1);
}
});

program.parse(process.argv);
Loading
Loading