Skip to content

Where developers from around the world partner to build and ship software for fun, for learning, or for profit.

License

Notifications You must be signed in to change notification settings

projectunic0rn/pub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

709 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Unicorn

Where developers from around the world partner to build and ship software together

Build Status Code Coverage Website License


About

Project Unicorn is a platform that connects developers worldwide to collaborate on software projects - whether for fun, learning, or profit. The platform enables developers to:

  • Find collaborators for side projects and ideas
  • Showcase skills through developer profiles
  • Manage projects with team workspaces
  • Share knowledge via the integrated blog

Features

  • User Authentication - Sign up, sign in, OAuth support, and password recovery
  • Developer Profiles - Showcase your skills, technologies, and bio
  • Project Management - Create, browse, and collaborate on projects
  • Team Workspaces - Manage project collaborators and configurations
  • Blog Platform - Markdown-based blog with author profiles and tagging
  • PWA Support - Works offline with service worker caching

Tech Stack

Category Technology
Framework Gatsby (React-based static site generator)
Language TypeScript
Styling Styled Components
Testing Jest + React Testing Library
CI/CD Travis CI
Hosting GitHub Pages (production) / Surge.sh (staging)

Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/projectunic0rn/pub.git
    cd pub
  2. Install dependencies

    npm install
  3. Start the development server

    npm run dev
  4. Open your browser

    Navigate to http://localhost:8000 to view the site.

Available Scripts

Command Description
npm run dev Start development server with hot reloading
npm run build Build production-ready static files
npm run serve Serve the production build locally
npm test Run tests with coverage report
npm run test:watch Run tests in watch mode
npm run typecheck Run TypeScript type checking
npm run lint Run ESLint checks
npm run lint:fix Auto-fix linting issues
npm run format Format code with Prettier

Project Structure

pub/
├── src/
│   ├── api/              # API services and HTTP client
│   ├── components/       # React components
│   │   ├── account/      # User account components
│   │   ├── blog/         # Blog-related components
│   │   ├── index-page/   # Landing page sections
│   │   ├── projects/     # Project management components
│   │   └── shared/       # Reusable UI components
│   ├── contexts/         # React Context providers
│   ├── helpers/          # Utility helpers (JWT, session, auth)
│   ├── hooks/            # Custom React hooks
│   ├── pages/            # Gatsby page components (routes)
│   ├── templates/        # Gatsby templates for dynamic pages
│   ├── styles/           # Global styles and typography
│   └── utils/            # Utility functions
├── content/
│   ├── blog/             # Blog posts (Markdown)
│   ├── assets/           # Blog images and author avatars
│   └── author.yaml       # Author metadata
├── static/               # Static assets
└── scripts/              # Build and utility scripts

Environment Configuration

The project uses environment-specific configuration files:

Environment File Description
Development .env.development Local development with mock data
Staging .env.next Staging environment (projectunicorn-next.surge.sh)
Production .env.release Production environment (projectunicorn.net)

To switch environments during build:

# Development (default)
npm run dev

# Staging build
GATSBY_ACTIVE_ENV=next npm run build

# Production build
GATSBY_ACTIVE_ENV=release npm run build

Testing

Tests are written using Jest and React Testing Library. Run tests with:

# Run all tests with coverage
npm test

# Run tests in watch mode during development
npm run test:watch

Test files are located alongside their components in __tests__ directories with a .spec.tsx extension.

Deployment

Staging (Automatic)

Pushes to the master branch automatically deploy to the staging environment at projectunicorn-next.surge.sh.

Production (Tagged Releases)

Production deployments are triggered by creating a tagged release:

git tag -a v1.x.x -m "Release v1.x.x"
git push origin v1.x.x

This deploys to projectunicorn.net via GitHub Pages.

Contributing

We welcome contributions from developers of all skill levels! Here's how to get started:

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

Please ensure your code:

  • Passes all existing tests (npm test)
  • Passes linting checks (npm run lint)
  • Includes tests for new functionality
  • Follows the existing code style

For detailed guidelines, see our Contributing Guide.

Documentation

License

Copyright 2019 Project Unicorn

This repository contains content under different licenses:

Acknowledgments

Built with love by the Project Unicorn community. Special thanks to all contributors who help make this project possible.


WebsiteReport BugRequest Feature

About

Where developers from around the world partner to build and ship software for fun, for learning, or for profit.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 9