mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
16 changed files with 456 additions and 100 deletions
@ -0,0 +1,20 @@ |
|||||
|
import { NgModule } from '@angular/core'; |
||||
|
import { RouterModule, Routes } from '@angular/router'; |
||||
|
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
||||
|
|
||||
|
import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; |
||||
|
|
||||
|
const routes: Routes = [ |
||||
|
{ |
||||
|
canActivate: [AuthGuard], |
||||
|
component: OpenSourceSoftwareFriendsPageComponent, |
||||
|
path: '', |
||||
|
title: 'OSS Friends' |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
@NgModule({ |
||||
|
exports: [RouterModule], |
||||
|
imports: [RouterModule.forChild(routes)] |
||||
|
}) |
||||
|
export class OpenSourceSoftwareFriendsPageRoutingModule {} |
@ -0,0 +1,145 @@ |
|||||
|
import { Component, OnDestroy } from '@angular/core'; |
||||
|
import { Subject } from 'rxjs'; |
||||
|
|
||||
|
@Component({ |
||||
|
host: { class: 'page' }, |
||||
|
selector: 'gf-oss-friends-page', |
||||
|
styleUrls: ['./oss-friends-page.scss'], |
||||
|
templateUrl: './oss-friends-page.html' |
||||
|
}) |
||||
|
export class OpenSourceSoftwareFriendsPageComponent implements OnDestroy { |
||||
|
public ossFriends = [ |
||||
|
{ |
||||
|
description: 'Build build custom software on top of your data.', |
||||
|
name: 'Appsmith', |
||||
|
url: 'https://www.appsmith.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'BoxyHQ’s suite of APIs for security and privacy helps engineering teams build and ship compliant cloud applications faster.', |
||||
|
name: 'BoxyHQ', |
||||
|
url: 'https://boxyhq.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Cal.com is a scheduling tool that helps you schedule meetings without the back-and-forth emails.', |
||||
|
name: 'Cal.com', |
||||
|
url: 'https://cal.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Centralize community, product, and customer data to understand which companies are engaging with your open source project.', |
||||
|
name: 'Crowd.dev', |
||||
|
url: 'https://www.crowd.dev' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.', |
||||
|
name: 'Documenso', |
||||
|
url: 'https://documenso.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'The Open-Source HubSpot Alternative. A single XOS enables to create unique and life-changing experiences that work for all types of business.', |
||||
|
name: 'Erxes', |
||||
|
url: 'https://erxes.io' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Survey granular user segments at any point in the user journey. Gather up to 6x more insights with targeted micro-surveys. All open-source.', |
||||
|
name: 'Formbricks', |
||||
|
url: 'https://formbricks.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'GitWonk is an open-source technical documentation tool, designed and built focusing on the developer experience.', |
||||
|
name: 'GitWonk', |
||||
|
url: 'https://gitwonk.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Open-source authentication and user management for the passkey era. Integrated in minutes, for web and mobile apps.', |
||||
|
name: 'Hanko', |
||||
|
url: 'https://www.hanko.io' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.', |
||||
|
name: 'HTMX', |
||||
|
url: 'https://htmx.org' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Open source, end-to-end encrypted platform that lets you securely manage secrets and configs across your team, devices, and infrastructure.', |
||||
|
name: 'Infisical', |
||||
|
url: 'https://infisical.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Mockoon is the easiest and quickest way to design and run mock REST APIs.', |
||||
|
name: 'Mockoon', |
||||
|
url: 'https://mockoon.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'The open-source notification infrastructure for developers. Simple components and APIs for managing all communication channels in one place.', |
||||
|
name: 'Novu', |
||||
|
url: 'https://novu.co' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Democratizing investment research through an open source financial ecosystem. The OpenBB Terminal allows everyone to perform investment research, from everywhere.', |
||||
|
name: 'OpenBB', |
||||
|
url: 'https://openbb.co' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic.', |
||||
|
name: 'Sniffnet', |
||||
|
url: 'https://www.sniffnet.net' |
||||
|
}, |
||||
|
{ |
||||
|
description: 'Software localization from A to Z made really easy.', |
||||
|
name: 'Tolgee', |
||||
|
url: 'https://tolgee.io' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Create long-running Jobs directly in your codebase with features like API integrations, webhooks, scheduling and delays.', |
||||
|
name: 'Trigger.dev', |
||||
|
url: 'https://trigger.dev' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.', |
||||
|
name: 'Typebot', |
||||
|
url: 'https://typebot.io' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'A modern CRM offering the flexibility of open-source, advanced features and sleek design.', |
||||
|
name: 'Twenty', |
||||
|
url: 'https://twenty.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: |
||||
|
'Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.', |
||||
|
name: 'Webiny', |
||||
|
url: 'https://www.webiny.com' |
||||
|
}, |
||||
|
{ |
||||
|
description: 'Webstudio is an open source alternative to Webflow', |
||||
|
name: 'Webstudio', |
||||
|
url: 'https://webstudio.is' |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
private unsubscribeSubject = new Subject<void>(); |
||||
|
|
||||
|
public constructor() {} |
||||
|
|
||||
|
public ngOnDestroy() { |
||||
|
this.unsubscribeSubject.next(); |
||||
|
this.unsubscribeSubject.complete(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
<div class="container"> |
||||
|
<div class="mb-5 row"> |
||||
|
<div class="col"> |
||||
|
<h3 class="d-none d-sm-block mb-3 text-center"> |
||||
|
<ng-container i18n>Our</ng-container> OSS Friends |
||||
|
</h3> |
||||
|
<div class="row"> |
||||
|
<div |
||||
|
*ngFor="let ossFriend of ossFriends" |
||||
|
class="col-xs-12 col-md-4 mb-3" |
||||
|
> |
||||
|
<mat-card appearance="outlined" class="d-flex flex-column h-100"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title class="h4" |
||||
|
><a target="_blank" [href]="ossFriend.url" |
||||
|
>{{ ossFriend.name }}</a |
||||
|
></mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content class="flex-grow-1"> |
||||
|
<p>{{ ossFriend.description }}</p> |
||||
|
</mat-card-content> |
||||
|
<mat-card-actions class="justify-content-end"> |
||||
|
<a mat-button target="_blank" [href]="ossFriend.url"> |
||||
|
<span |
||||
|
><ng-container i18n>Visit</ng-container> {{ ossFriend.name |
||||
|
}}</span |
||||
|
><ion-icon class="ml-1" name="arrow-forward-outline"></ion-icon> |
||||
|
</a> |
||||
|
</mat-card-actions> |
||||
|
</mat-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,19 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
|
|
||||
|
import { OpenSourceSoftwareFriendsPageRoutingModule } from './oss-friends-page-routing.module'; |
||||
|
import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; |
||||
|
import { MatCardModule } from '@angular/material/card'; |
||||
|
import { MatButtonModule } from '@angular/material/button'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [OpenSourceSoftwareFriendsPageComponent], |
||||
|
imports: [ |
||||
|
CommonModule, |
||||
|
MatButtonModule, |
||||
|
MatCardModule, |
||||
|
OpenSourceSoftwareFriendsPageRoutingModule |
||||
|
], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class OpenSourceSoftwareFriendsPageModule {} |
@ -0,0 +1,3 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
} |
Loading…
Reference in new issue