Where developers from around the world partner to build and ship software together
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
- 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
| 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) |
-
Clone the repository
git clone https://github.com/projectunic0rn/pub.git cd pub -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser
Navigate to
http://localhost:8000to view the site.
| 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 |
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
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 buildTests 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:watchTest files are located alongside their components in __tests__ directories with a .spec.tsx extension.
Pushes to the master branch automatically deploy to the staging environment at projectunicorn-next.surge.sh.
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.xThis deploys to projectunicorn.net via GitHub Pages.
We welcome contributions from developers of all skill levels! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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.
Copyright 2019 Project Unicorn
This repository contains content under different licenses:
- Software: Licensed under the MIT License
- Blog Content (
/contentdirectory): Licensed under Creative Commons Attribution Share Alike 4.0 International (CC BY-SA 4.0)
Built with love by the Project Unicorn community. Special thanks to all contributors who help make this project possible.