Skip to content

Contributing

Thank you for your interest in contributing to LynkVault!

How to Contribute

There are several ways to contribute to LynkVault:

Report Bugs

Found a bug? Please report it using our bug report form:

owb.gg/bugs

Include:

  • Clear description of the issue
  • Steps to reproduce
  • Expected vs actual behavior
  • Your environment (OS, Docker version, etc.)
  • Any relevant logs or error messages

Request Features

Have an idea for a new feature? Submit a feature request:

owb.gg/features

Include:

  • Description of the feature
  • Why it would be useful
  • Any examples or mockups if applicable

Improve Documentation

Found a typo or want to improve these docs?

  1. Fork the repository from GitLab
  2. Make your changes to files in the docs/ directory
  3. Test locally: mkdocs serve
  4. Submit a merge request

Contact

For other inquiries or questions:

Email: hello@beenhamow.co.uk

Development

Want to contribute code? Here's how to set up a development environment.

Development Setup

Prerequisites

  • Node.js 20+
  • Yarn package manager
  • MySQL 8.4+
  • Git

Setup Steps

  1. Clone the repository:
git clone https://gitlab.beantech.uk/my-projects/link-shortener.git
cd link-shortener
  1. Install dependencies:
yarn install
  1. Configure your environment:
cp .env.example .env

Edit .env with your local configuration:

DATABASE_URL="mysql://root:password@localhost:3306/lynkvault_dev"
APP_URL=http://localhost:3000
AUTH_SECRET=$(openssl rand -base64 32)
AUTH_TRUSTED_ORIGINS=http://localhost:3000
NODE_ENV=development
  1. Set up the database:
# Create database
mysql -u root -p -e "CREATE DATABASE lynkvault_dev;"

# Run migrations
yarn db:migrate
  1. Start the development server:
yarn dev

The application will be available at http://localhost:3000

Development Workflow

Making Changes

  1. Create a new branch:
git checkout -b feature/your-feature-name
  1. Make your changes

  2. Run quality checks:

# Lint code
yarn lint

# Run tests
yarn test

# Type check
yarn tsc --noEmit
  1. Commit your changes:
git commit -m "feat: description of your change"

We use Conventional Commits format:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • refactor: - Code refactoring
  • test: - Test changes

Submitting Changes

  1. Push your branch:
git push origin feature/your-feature-name
  1. Create a Merge Request on GitLab

  2. Describe your changes:

  3. What does this change?
  4. Why is this needed?
  5. How has it been tested?

  6. Wait for review

Database Changes

If you're modifying the database schema:

  1. Edit prisma/schema.prisma

  2. Create a migration:

yarn db:migrate
# Give your migration a descriptive name
  1. Test the migration:
yarn db:reset
  1. Commit both the schema and migration files

Development Tools

Prisma Studio - Visual database editor:

yarn db:studio

Opens at http://localhost:5555

Storybook - Component development:

yarn storybook

Opens at http://localhost:6006

Issue Tracking

LynkVault uses Jira for internal issue tracking. Issues are not publicly accessible.

To report issues or request features, please use:

Your submissions will be reviewed and added to our internal tracking system.

GitLab

The project is hosted on a self-hosted GitLab instance:

gitlab.beantech.uk/my-projects/link-shortener

You can:

  • View the source code
  • Fork the repository
  • Submit merge requests
  • View public branches and releases

Code Style

  • Use TypeScript for all code
  • Follow existing code patterns
  • Write tests for new features
  • Keep functions small and focused
  • Add comments for complex logic
  • Use meaningful variable names

Testing

Write tests for new features:

describe('Feature', () => {
  it('should do something', () => {
    // Test code here
  });
});

Run tests:

# Run all tests
yarn test

# Run with coverage
yarn test:coverage

# Watch mode
yarn test --watch

Questions?

If you have questions about contributing:

License

By contributing to LynkVault, you agree that your contributions will be licensed under the same license as the project.


Thank you for helping make LynkVault better!