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

https://github.com/daquino94/linux-path

An interactive learning platform that has helped thousands of people take their first steps into the world of Linux.
https://github.com/daquino94/linux-path

linux next-intl nextjs react

Last synced: 26 days ago
JSON representation

An interactive learning platform that has helped thousands of people take their first steps into the world of Linux.

Awesome Lists containing this project

README

          

# Linux Path


Linux Path Logo

A New Life for LinuxJourney


An interactive learning platform that has helped thousands of people take their first steps into the world of Linux.


Next.js
TypeScript
Tailwind CSS
Docker

## Support the Project

If you find Linux Path helpful and want to support its development, consider buying me a coffee! Your support helps keep this project alive and enables continuous improvements to help more people learn Linux.



Buy Me A Coffee

## Features

- ๐Ÿง **Interactive Linux Learning**: Step-by-step lessons covering Linux fundamentals
- ๐ŸŒ **Multi-language Support**: Built with internationalization (i18n) using next-intl
- ๐Ÿ“š **Comprehensive Curriculum**: Structured chapters covering everything from basics to advanced topics
- ๐ŸŽฏ **Interactive Exercises**: Hands-on practice with real Linux commands
- ๐Ÿ“ฑ **Responsive Design**: Beautiful, modern interface that works on all devices
- ๐Ÿ”ง **Easy Deployment**: Multiple deployment options including Docker
- ๐Ÿ“– **JSON-Based Content**: Flexible content management through JSON dictionaries
- ๐Ÿš€ **Fast Performance**: Built with Next.js for optimal loading times

## Roadmap

Here are the exciting features coming to Linux Path:

| Feature | Status |
| ----------------------- | ------ |
| SSG | โœ… |
| Lesson generator script | ๐Ÿ“‹ |
| Dark Mode | ๐Ÿ“‹ |
| New Lessons | ๐Ÿ“‹ |
| View progress | ๐Ÿ“‹ |

**Legend:**

- ๐Ÿ”„ In Development
- ๐Ÿ“‹ Planned
- ๐Ÿ’ก Research Phase
- โœ… Complete

## Dictionary System

Linux Path uses a sophisticated dictionary system for content management and internationalization. For detailed information, see the [Dictionary Documentation](dictionaries/README.md).

### Dictionary Status

| Language | Status | Completion |
| ------------- | -------------- | ------------- |
| ๐Ÿ‡บ๐Ÿ‡ธ English | โœ… Complete | 100% (Master) |
| ๐Ÿ‡ฎ๐Ÿ‡น Italian | ๐Ÿ”„ In Progress | ~80% |
| ๐Ÿ‡ฉ๐Ÿ‡ช German | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ซ๐Ÿ‡ท French | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ช๐Ÿ‡ธ Spanish | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ฎ๐Ÿ‡ณ Hindi | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ฏ๐Ÿ‡ต Japanese | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ต๐Ÿ‡น Portuguese | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡ท๐Ÿ‡บ Russian | โœ… Complete | 100% (๐Ÿค– AI) |
| ๐Ÿ‡จ๐Ÿ‡ณ Chinese | โœ… Complete | 100% (๐Ÿค– AI) |

Unfortunately, I am a native Italian speaker, so I cannot guarantee the accuracy or naturalness of the translations in other languages.

## Quick Start

### Prerequisites

Choose one of the following:

- **Node.js**: 18.0+ and npm (for local development)
- **Docker**: Latest version (for containerized deployment)

### Option 1: Local Development

1. **Clone the repository**:

```bash
git clone https://github.com/daquino94/linux-path.git
cd linux-path
```

2. **Install dependencies**:

```bash
npm install
```

3. **Start the development server**:

```bash
npm run dev
```

4. **Open your browser**:
Navigate to `http://localhost:3000`

### Option 2: Production Build (Local)

1. **Clone and install** (same as above steps 1-2)

2. **Build the application**:

```bash
npm run build
```

3. **Start the production server**:
```bash
npm start
```

### Option 3: Docker Deployment

#### Using Docker Compose (Recommended)

1. **Clone the repository**:

```bash
git clone https://github.com/daquino94/linux-path.git
cd linux-path
```

2. **Run with Docker Compose**:
```bash
docker-compose up -d
```

#### Manual Docker Build

1. **Build the Docker image**:

```bash
docker build -t linux-path .
```

2. **Run the container**:
```bash
docker run -d \
--name linux-path \
-p 3000:3000 \
-e NODE_ENV=production \
linux-path
```

## Architecture

### Multi-stage Docker Build

The project uses a sophisticated multi-stage Docker build process:

- **Stage 1 (Builder)**: Compiles and builds the Next.js application
- **Stage 2 (Runner)**: Creates a lean production image with only necessary files

This approach results in:

- โœ… Smaller final image size
- ๐Ÿ”’ Enhanced security (no build tools in production)
- โšก Faster deployment times
- ๐Ÿงน Cleaner production environment

### Technology Stack

- **Frontend Framework**: Next.js 15+ with App Router
- **Language**: TypeScript for type safety
- **Styling**: Tailwind CSS for responsive design
- **Internationalization**: next-intl for multi-language support
- **Content Management**: JSON-based dictionary system
- **Containerization**: Docker with multi-stage builds

## Configuration

### Environment Variables

The application can be configured using the following environment variables:

| Variable | Description | Default |
| --------------------- | ----------------------------- | ----------------------- |
| `NODE_ENV` | Environment mode | `development` |
| `PORT` | Port to run the application | `3000` |
| `NEXT_PUBLIC_APP_URL` | Public URL of the application | `http://localhost:3000` |

### Development Configuration

Create a `.env.local` file in the root directory:

```env
NODE_ENV=development
NEXT_PUBLIC_APP_URL=http://localhost:3000
```

### Adding New Content or contributing New Languages

please refer to this [documentation](/dictionaries/README.md)

## Contributing

We welcome contributions! Here's how you can help:

### Ways to Contribute

1. **๐ŸŒ Translations**: Help translate content to new languages
2. **๐Ÿ“ Content**: Improve existing lessons or add new ones
3. **๐Ÿ› Bug Reports**: Report issues you encounter
4. **๐Ÿ’ก Feature Requests**: Suggest new features
5. **๐Ÿ”ง Code**: Submit pull requests with improvements

### Development Workflow

1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Make your changes**: Follow the coding standards
4. **Test thoroughly**: Ensure everything works correctly
5. **Commit your changes**: `git commit -m 'Add amazing feature'`
6. **Push to branch**: `git push origin feature/amazing-feature`
7. **Open a Pull Request**: Describe your changes clearly

## Support

- ๐Ÿ“– **Documentation**: Check the [Dictionary Documentation](dictionaries/README.md)
- ๐Ÿ› **Issues**: Report bugs on the [GitHub Issues page](https://github.com/daquino94/linux-path/issues)
- ๐Ÿ’ฌ **Discussions**: Join conversations in [GitHub Discussions](https://github.com/daquino94/linux-path/discussions)
- ๐Ÿ“ง **Contact**: Reach out to the maintainers

## License

This project is licensed under the CC-BY-SA-4.0 License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- ๐Ÿ™‹ **LinuxJourney**: Original inspiration for this project
- ๐Ÿง **Linux Community**: For the wealth of knowledge and support
- ๐Ÿ‘ฅ **Contributors**: Everyone who has contributed to making this project better
- ๐ŸŒŸ **Users**: All the learners who use this platform to master Linux