# Crafta

[![NPM Version](https://img.shields.io/npm/v/crafta.svg)](https://www.npmjs.com/package/crafta) [![License](https://img.shields.io/npm/l/crafta.svg)](https://github.com/daxp472/crafta/blob/main/LICENSE) [![Downloads](https://img.shields.io/npm/dm/crafta.svg)](https://www.npmjs.com/package/crafta)

> Lightweight, modular Node.js framework for rapid backend development

## Table of Contents

- [Installation](#installation)
- [Quick Start](#quick-start)
- [Features](#features)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Support](#support)
- [License](#license)

## Features

- **Modular & Lightweight**: Easily extendable and adaptable to your needs.
- **Authentication Ready**: Pre-built authentication system with JWT and bcrypt support. Install it separately via `@dax-crafta/auth`.
- **Express Integration**: Built on top of Express, it integrates smoothly into your existing Node.js apps.
- **Plug-and-Play System**: Minimal setup required—just install and configure to get started in minutes.

## Installation

```bash
# Core package
npm install crafta

# Optional: Authentication module
npm install @dax-crafta/auth
```

## Quick Start

```javascript
const crafta = require('crafta');
const { auth } = require('@dax-crafta/auth');

const app = crafta();

// Enable authentication (optional, if you need auth functionality)
app.use(auth({
  secret: 'your-secret-key',
  expiresIn: '1d'
}));

// Define a protected route
app.get('/protected', (req, res) => {
  res.json({ message: 'Protected route accessed successfully!' });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
```

## Documentation

For detailed documentation, visit our [documentation site](https://crafta.dev/docs).

### Authentication

If you need authentication features, you can integrate `@dax-crafta/auth`:

```javascript
const { auth } = require('@dax-crafta/auth');

// Configure authentication
app.use(auth({
  secret: 'your-secret-key',
  expiresIn: '1d'
}));

// Create a new user
const user = await createUser({
  username: 'john',
  password: 'secure123'
});
```

## Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## Support

- [GitHub Issues](https://github.com/daxp472/crafta/issues)
- [Documentation](https://crafta.dev/docs)
- [Discord Community](https://discord.gg/crafta)

## License

ISC © [Dax Patel]

---