An open API service indexing awesome lists of open source software.

https://github.com/nerufuyo/neruwake

A comprehensive VSCode extension that tracks daily coding activity, including wake-up time, time spent coding, programming languages used, and displays this data with daily updates on GitHub profile README.
https://github.com/nerufuyo/neruwake

github vscode vscode-extension

Last synced: about 2 months ago
JSON representation

A comprehensive VSCode extension that tracks daily coding activity, including wake-up time, time spent coding, programming languages used, and displays this data with daily updates on GitHub profile README.

Awesome Lists containing this project

README

          

# NeruWake - VSCode Time Tracker Extension

A comprehensive VSCode extension that tracks daily coding activity, including wake-up time, time spent coding, programming languages used, and displays this data with daily updates on GitHub profile README.

## Features

- **Session Tracking**: Automatically record wake-up time and total active coding time
- **Language Detection**: Track programming languages based on active file types
- **Database Storage**: Store data securely in Supabase (free tier)
- **GitHub Profile Integration**: Daily automatic updates of coding statistics
- **Customizable Themes**: Multiple visual themes for GitHub display
- **Clean Architecture**: Built with OOP principles, DRY, and KISS methodologies

## Installation

### From VSCode Marketplace
1. Open VSCode
2. Go to Extensions (Ctrl+Shift+X)
3. Search for "NeruWake"
4. Click Install

### Manual Installation
1. Clone this repository
2. Install dependencies: `npm install`
3. Compile TypeScript: `npm run compile`
4. Package extension: `npm run package`
5. Install the .vsix file in VSCode

## Configuration

### Initial Setup

1. **Supabase Setup**:
- Create a free Supabase account at [supabase.com](https://supabase.com)
- Create a new project
- Copy your project URL and anon key
- Create a `.env` file from `.env.example`
- Add your Supabase credentials

2. **GitHub Integration** (Optional):
- Generate a GitHub Personal Access Token
- Add it to your `.env` file
- Configure your GitHub username in extension settings

### Extension Settings

Access settings via Command Palette: `NeruWake: Open Settings`

- **Auto Start**: Automatically start tracking when VSCode opens
- **GitHub Integration**: Enable/disable GitHub profile updates
- **Theme**: Choose from 5 available themes
- **Update Time**: Set daily GitHub update time
- **Timezone**: Configure your timezone

## Usage

### Basic Commands

Open Command Palette (Ctrl+Shift+P) and use:

- `NeruWake: Start Tracking Session` - Begin tracking coding activity
- `NeruWake: Stop Tracking Session` - End current session
- `NeruWake: Show Daily Statistics` - View current session stats
- `NeruWake: Sync to GitHub Profile` - Manually sync to GitHub
- `NeruWake: Open Settings` - Configure extension

### Automatic Tracking

The extension automatically tracks:
- Session start/end times
- File editing activity
- Programming languages used
- Idle detection (pauses after 5 minutes of inactivity)

### GitHub Profile Integration

When enabled, the extension will:
- Update your GitHub profile README daily
- Display coding statistics with your chosen theme
- Show programming language breakdown
- Track coding streaks and active hours

## Themes

Choose from 5 professionally designed themes:

1. **Minimal**: Clean, simple statistics display
2. **Dark**: Modern dark theme with subtle accents
3. **Gradient**: Colorful gradient backgrounds
4. **Professional**: Corporate-friendly design
5. **Animated**: Smooth animations and transitions

## Architecture

### Project Structure

```
src/
├── core/ # Core business logic
│ ├── ConfigurationManager.ts
│ └── SessionManager.ts
├── models/ # Data models and types
│ ├── types.ts
│ ├── SessionModel.ts
│ └── LanguageUsageModel.ts
├── services/ # External service integrations
├── repositories/ # Data access layer
├── utils/ # Utility functions
│ ├── helpers.ts
│ └── Logger.ts
├── ui/ # User interface components
└── extension.ts # Main extension entry point
```

### Design Principles

- **Single Responsibility**: Each class has one clear purpose
- **DRY (Don't Repeat Yourself)**: Common functionality extracted to utilities
- **KISS (Keep It Simple, Stupid)**: Simple, readable implementations
- **OOP**: Object-oriented design with proper encapsulation
- **Clean Architecture**: Separation of concerns and dependency injection

## Database Schema

### Supabase Tables

```sql
-- User sessions
sessions (
id: uuid PRIMARY KEY,
user_id: uuid REFERENCES auth.users(id),
date: date NOT NULL,
wake_up_time: timestamp,
total_active_time: integer,
created_at: timestamp DEFAULT now()
)

-- Language usage
language_usage (
id: uuid PRIMARY KEY,
session_id: uuid REFERENCES sessions(id),
language: varchar(50) NOT NULL,
time_spent: integer,
file_count: integer,
created_at: timestamp DEFAULT now()
)

-- User preferences
user_preferences (
user_id: uuid PRIMARY KEY REFERENCES auth.users(id),
github_username: varchar(100),
github_token: text,
selected_theme: varchar(50) DEFAULT 'minimal',
daily_update_time: time DEFAULT '23:59:00',
timezone: varchar(50) DEFAULT 'UTC',
auto_update_enabled: boolean DEFAULT true,
created_at: timestamp DEFAULT now(),
updated_at: timestamp DEFAULT now()
)
```

## Development

### Prerequisites

- Node.js 18+
- TypeScript 4.9+
- VSCode Extension Development Environment

### Setup

```bash
# Clone repository
git clone https://github.com/nerufuyo/neruwake.git
cd neruwake

# Install dependencies
npm install

# Copy environment configuration
cp .env.example .env

# Compile TypeScript
npm run compile

# Run in watch mode for development
npm run watch
```

### Testing

```bash
# Run linting
npm run lint

# Run tests
npm test

# Run extension in development mode
F5 (in VSCode)
```

### Building

```bash
# Compile for production
npm run vscode:prepublish

# Package extension
npm run package
```

## Contributing

1. Fork the repository
2. Create a feature branch: `git checkout -b feature/your-feature-name`
3. Commit your changes: `git commit -m "Add your feature"`
4. Push to the branch: `git push origin feature/your-feature-name`
5. Submit a pull request

### Commit Message Convention

Use conventional commit messages:

- `feat: add new feature`
- `fix: resolve bug in session tracking`
- `docs: update README documentation`
- `style: format code with prettier`
- `refactor: improve session manager architecture`
- `test: add unit tests for configuration manager`
- `chore: update dependencies`

## Security & Privacy

- All sensitive data is encrypted
- Minimal data collection principle
- User control over all data
- HTTPS-only connections
- Easy data deletion options

## Support

- **Issues**: [GitHub Issues](https://github.com/nerufuyo/neruwake/issues)
- **Documentation**: [Wiki](https://github.com/nerufuyo/neruwake/wiki)
- **Discussions**: [GitHub Discussions](https://github.com/nerufuyo/neruwake/discussions)

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Roadmap

### Version 1.0
- [x] Core session tracking
- [x] Language detection
- [ ] Supabase integration
- [ ] GitHub profile updates
- [ ] Theme system

### Version 2.0
- [ ] Multi-editor support
- [ ] Team analytics
- [ ] Advanced themes
- [ ] Mobile companion app
- [ ] AI insights

## Acknowledgments

- VSCode Extension API team
- Supabase for excellent backend services
- GitHub for profile integration capabilities
- Open source community for inspiration

---

**Built with ❤️ for developers who love tracking their coding journey**