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.
- Host: GitHub
- URL: https://github.com/nerufuyo/neruwake
- Owner: nerufuyo
- License: mit
- Created: 2025-08-22T22:29:29.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-23T02:13:07.000Z (10 months ago)
- Last Synced: 2025-08-23T04:22:11.413Z (10 months ago)
- Topics: github, vscode, vscode-extension
- Language: TypeScript
- Homepage:
- Size: 85.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
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**