If you’re new to Sourcehunt, it’s our monthly post for promoting open source projects that seem interesting or promising and could use help in terms of Github stars or pull requests.
It’s our way of giving back – promoting projects that we use (or could use) so that they gain enough exposure to attract a wider audience, a powerful community and, possibly, new contributors or sponsors.
monicahq/monica [2,067 ★]
Monica blew up on Hacker News and ProductHunt the other day, and it was only fitting we mention it here despite having racked up well over 2000 stars already.
Monica is a Laravel-based single-user-CRM for personal relationships. Not for business, but literally for people in your life – tracking whom you haven’t bought gifts yet, money loans, birthdays, meetings, and more.
We think it’s half way through refreshing (because it’s something you don’t see often) and depressing (because do we really need apps to track the people in our life now?), but interesting nonetheless.
Due to the massive influx of interest from all over, Monica now has dozens of issues and several PRs ready for inspection, not to mention docs in need of fixing, a roadmap to plan, and more. If you want a popular project to contribute to, here it is!
genkgo/mail [3 ★]
Gengko/mail claims to be a modern reinvention of the PHP mailing libraries. In their own words:
While analyzing what mail library to use when refactoring a code base, we discovered that the available ones are mostly legacy libraries. Some do not use namespaces and every library we encountered were merely a collection of scalar property bags than objects using encapsulation. This is not a critique to these libraries. We all used them, and used them with joy. However, we think there is a need for new libraries that use modern principles.
Gengko’s mail is supposed to be used if you want to send e-mails over different transports and protocols using immutable messages and streams and if streams and Gengko in the same sentence sound familiar, it’s because we sourcehunted them before – only back then they were streaming zip files. Usage is dead simple and intuitive:
$message = (new FormattedMessageFactory()) ->withHtml('<html><body><p>Hello World</p></body></html>') ->withAttachment(new FileAttachment('/order1.pdf', new ContentType('application/pdf'))) ->createMessage() ->withHeader(new From(new Address(new EmailAddress('firstname.lastname@example.org'), 'name'))) ->withHeader(new Subject('Hello World')) ->withHeader(new To(new AddressList([new Address(new EmailAddress('email@example.com'), 'name')]))) ->withHeader(new Cc(new AddressList([new Address(new EmailAddress('firstname.lastname@example.org'), 'name')]))); $transport = new SmtpTransport( ClientFactory::fromString('smtp://user:pass@host/')->newClient(), EnvelopeFactory::useExtractedHeader() ); $transport->send($message);
This repo is in dire need of love: it needs stars, contributors, and mainly testers, so please dive in an help the team provide the PHP community with a new, modern, namespaced and encapsulated library ready for the PHP 7+ era.
kitetail/zttp [526 ★]
If you’re not familiar with the evolution of Guzzle (a PHP HTTP client we explore in the premium Exploring PHP course that’s available for purchase now), the library has basically gotten more professional and less usable with each new version. New layers upon layers of specification-respecting abstractions and rules made Guzzle incredibly difficult to get started with. Coupled with further abstractions like HTTPlug designed to prevent the old-Guzzle vs new-Guzzle conflicts, the situation in general just isn’t a pleasant one to develop in.
Enter ZTTP – a package that wraps Guzzle with some easy to use and approachable helper methods so that it once again becomes as usable as it once was. It was created by the testing god of Laravel: Adam Wathan, and knowing his code there’s not much to contribute with, but docs could use help and there’s always a need for usage examples and PRs with more convenient helper methods.
Continue reading %Family CRMs, Guzzle Wrappers and PHP Machine Learning? Sourcehunt!%