Skip to content

base59-dev/we-craft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WeCraft πŸš€

WeCraft is a public build-in-public platform connecting technical founders and developers, built with Phoenix LiveView and implementing a context-driven architecture with clean separation of concerns.

Overview

WeCraft enables technical founders to showcase their projects and connect with skilled developers who want to contribute to exciting ventures. Whether you're building the next big SaaS, exploring fintech solutions, or working on cutting-edge healthtech innovations, WeCraft helps you find the right collaborators.

Key Features

  • Project Showcase: Technical founders can create detailed project profiles with descriptions, tech stacks, and current status
  • Developer Matching: Smart search and filtering to match developers with projects based on technical skills and business domains
  • Real-time Chat: Built-in messaging system for project discussions and collaboration
  • Magic Link Authentication: Passwordless login system for seamless user experience
  • Tag-based Discovery: Comprehensive tagging system for technologies (Elixir, Phoenix, React, etc.) and business domains (Fintech, Healthtech, SaaS, etc.)
  • Project Status Tracking: Track projects from idea stage through development to live deployment

Architecture

Core Structure

  • Phoenix Contexts: Clean separation with Accounts, Projects, Profiles, and Chats contexts
  • Use Case Pattern: Business logic delegated to WeCraft.*.UseCases.*UseCase modules
  • Domain Models: Schema validation and business logic in lib/we_craft/*/
  • LiveView Frontend: Interactive web layer in lib/we_craft_web/ with real-time updates

Authentication System

  • Magic Link Based: No passwords required - uses email token-based authentication
  • Scoped Authentication: User sessions with WeCraft.Accounts.Scope.for_user/1
  • User Roles: Technical Founder or Developer personas
  • Session Management: Secure token-based sessions with remember-me functionality

Database Design

  • PostgreSQL: Primary database with array fields for flexible tag storage
  • Project Status Enum: [:idea, :in_dev, :private_beta, :public_beta, :live]
  • Tag Validation: Predefined technical and business tag lists with validation
  • Real-time Features: Chat messaging with Phoenix PubSub

Getting Started

Prerequisites

  • Elixir 1.15+
  • Erlang/OTP 26+
  • Node.js (for assets)
  • PostgreSQL
  • (Optional) asdf for version management

Installation

  1. Clone the repository

    git clone https://github.com/the-nerd-company/we-craft.git
    cd we-craft
  2. Setup development environment with asdf (recommended)

    make init-asdf
  3. Install dependencies and setup database

    mix setup
  4. Start the Phoenix server

    mix phx.server
  5. Visit the application

    Open localhost:4000 in your browser

Alternative Setup Commands

  • Manual dependency installation: mix deps.get
  • Database setup: mix ecto.setup
  • Asset compilation: mix assets.build
  • Full database reset: mix ecto.reset

Development Workflow

Key Commands

# Run tests (with database reset)
make test

# Generate test coverage reports
make coverage

# Reset test database only
make reset-test-db

# Extract and merge translations
make generate-translations

# Build assets for development
mix assets.build

# Build assets for production
mix assets.deploy

Project Structure

lib/
β”œβ”€β”€ we_craft/                     # Core business logic
β”‚   β”œβ”€β”€ accounts/                 # User management & authentication
β”‚   β”œβ”€β”€ projects/                 # Project management & search
β”‚   β”œβ”€β”€ profiles/                 # User profile management
β”‚   └── chats/                    # Real-time messaging
β”œβ”€β”€ we_craft_web/                 # Web interface
β”‚   β”œβ”€β”€ live/                     # LiveView modules
β”‚   β”œβ”€β”€ components/               # Reusable UI components
β”‚   └── controllers/              # HTTP controllers
└── we_craft.ex                   # Main application module

test/
β”œβ”€β”€ we_craft/                     # Business logic tests
β”œβ”€β”€ we_craft_web/                 # Web layer tests
└── support/                      # Test fixtures and helpers

Tag System

WeCraft uses a comprehensive tagging system for project discovery:

Technical Tags: elixir, phoenix, react, javascript, python, docker, kubernetes, etc. Business Domains: fintech, healthtech, saas, ecommerce, productivity, analytics, etc.

Tags are validated against predefined lists and automatically normalized to lowercase.

LiveView Architecture

All major features use Phoenix LiveView with proper mount hooks:

live_session :require_authenticated_user,
  on_mount: [{WeCraftWeb.UserAuth, :require_authenticated}]

Testing

The project includes comprehensive test coverage:

# Run all tests with fresh test database
make test

# Generate LCOV coverage report  
make coverage

# Run specific test files
mix test test/we_craft/projects/

Test Fixtures

Tests use fixtures from test/support/fixtures/*_fixtures.ex:

  • AccountsFixtures.user_fixture/1 for authenticated users
  • ProjectsFixtures.project_fixture/1 for test projects
  • AccountsFixtures.user_scope_fixture/1 for scoped contexts

Production Deployment

Docker Support

The project includes multi-stage Docker builds:

# Build and push Docker image
make build-and-push-docker-image

# Deploy to production
make deploy-to-prod

Production Configuration

  • Web Server: Bandit adapter for optimal Phoenix LiveView performance
  • Telemetry: OpenTelemetry integration with custom logger backend
  • Assets: Minified CSS/JS with Phoenix digest for cache busting
  • Database: PostgreSQL with connection pooling

Monitoring & Observability

WeCraft includes comprehensive monitoring:

  • OpenTelemetry: Distributed tracing and metrics
  • Phoenix LiveDashboard: Real-time application metrics
  • Custom Telemetry: Application-specific metrics and logging
  • Health Checks: /health endpoint for load balancer monitoring

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run tests (make test)
  4. Commit your changes (git commit -m 'Add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Code Quality

The project maintains high code quality with:

  • Credo: Static code analysis
  • Dialyzer: Type checking and static analysis
  • ExCoveralls: Test coverage reporting
  • Git Hooks: Pre-commit hooks for code quality

License

This project is open source with a non-commercial license.

WeCraft Open Source License (Non-Commercial) - See LICENSE file for details.

What's Allowed βœ…

  • Personal use and learning
  • Educational purposes
  • Research and development
  • Open source contributions
  • Non-profit organizations
  • Forking and modifying the code

What's Not Allowed ❌

  • Commercial use without permission
  • Selling the software or services based on it
  • Monetizing through advertising, subscriptions, etc.
  • Offering as a service (SaaS)
  • Any revenue-generating activities

Commercial Use πŸ’Ό

Want to use WeCraft commercially? Commercial licenses are available! Please contact the project owner for reasonable commercial licensing terms that support the ongoing development of this open source project.

Contributing 🀝

We welcome contributions from the community! By contributing, you help make WeCraft better for everyone while the project remains free for non-commercial use.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published